Features
Everything Tessryx can do
This is the full list of what Tessryx can do, each with a link to its docs. Flip the switch in the toolbar to see the settings and limits behind each one. Things it can't do are listed at the bottom, in case you're checking.
All features
Building with your AI
You bring the AI. Tessryx connects to it over MCP, and you choose the workspace it can build in.
Build with Claude, ChatGPT or any MCP client
Tessryx runs an MCP server, the standard way AI assistants connect to outside tools. Add it to the assistant you use and it can build in your workspace while you talk to it, from the data model through to the pages.
How it works
- Pick a workspace when you connect
- It works with your role
Your AI runs and checks what it builds
Your AI can make and change anything in your workspace and publish it. When something it built fails, it can run it again and read the error itself.
Guides written for your AI
Tessryx gives your AI short guides on how the pieces fit together, plus recipes for common builds like a blog, and it reads them before it starts building.
You approve which workspace it uses
When you connect, a Tessryx consent screen asks which workspace the assistant may build in, and a code sent to your email confirms it.
Your AI is held to your role
Your assistant gets the permissions your role has in that workspace, checked the same way the web app checks them. It can't read secret values or change your account settings.
Bring your own AI, with no markup
You build with the assistant and subscription you already have, and AI steps in your workflows run on your own model key. Tessryx doesn't bill for model usage at all.
Rate limits for agents
If an assistant gets stuck in a loop, its requests are slowed down. Your own use of the web app isn't affected.
Data and content
Your content lives in records that follow a shape you describe. Saves are checked against it, and a published record gets its own public address.
Content records (a headless CMS)
In Tessryx, content is a set of records. A record is one item, like a menu or a product, and it has to fit a shape you described, meaning which fields it has and what each one can hold. A save that doesn't fit is turned away with the field named.
Free holds 100 records and Pro 1,000; Agency goes to 10,000. Past the limit you can still edit and unpublish, and live records keep serving.
How it works
- Your AI writes the schema
- Your team edits in Content Studio
- Saving and publishing are separate
- Pages read it however suits them
Content types defined with JSON Schema
Describe a kind of content once, for example a menu item with a name and a price. Tessryx uses that to check the data and to lay out the form people edit it in.
Up to 100 schemas on Free, 200 on Pro and 1,000 on Agency.
A public JSON URL for every published record
Publishing a record puts its JSON at a public URL, served from a global network. A site or app hosted anywhere can load it from there.
Every save checked against its schema
Records are checked against their shape on every save, including saves made by your AI or by a workflow. If something doesn't fit, the save is refused and the message names the field.
Lists, paging and exact counts
Build a "latest posts" list or a product index with paging and a total, even for big collections. Counts for votes and ratings stay accurate when lots of people submit at once.
Edits that can't overwrite each other
If two edits to the same record collide, the second is refused and asked to reload, and the first is kept. Your AI can also change a single field without resending the whole record.
Rename or move a record
Rename a record or move it to another folder in one step. Its published address stays where it is.
Editors and forms
Forms are generated from the schema of the data they edit, so changing the schema changes the form.
Forms generated from JSON Schema
When your AI builds something on Tessryx, it also describes the data, such as a menu whose items each have a name, a price and maybe a photo. That description is a JSON Schema, and Tessryx reads it to lay out the form your team edits in, with dropdowns, date pickers and lists you can drag into order.
How it works
- The schema picks each control
- A few hints cover the rest
Try it
A schema and the editor made from it
Schema
{ "type": "object", "required": [ "name", "email", "pickup", "items" ], "properties": { "name": { "type": "string", "title": "Your name", "minLength": 1 }, "email": { "type": "string", "format": "email", "title": "Email", "examples": [ "sam@example.com" ] }, "pickup": { "title": "Pick up", "oneOf": [ { "const": "friday", "title": "Friday after school" }, { "const": "saturday", "title": "Saturday morning" } ] }, "items": { "type": "array", "title": "Order", "minItems": 1, "items": { "type": "object", "required": [ "item", "dozens" ], "properties": { "item": { "type": "string", "title": "Item", "enum": [ "Chocolate chip cookies", "Lemon bars", "Banana bread" ] }, "dozens": { "type": "integer", "title": "How many dozen", "minimum": 1, "maximum": 6, "default": 1 } } } }, "notes": { "type": "string", "title": "Anything we should know?", "x-tessryx-ui": { "input": "textarea", "options": { "rows": 2 } } }, "paid": { "type": "boolean", "title": "Paid", "default": false } } }
Edit the schema and the editor changes with it.
Editor
Your name
Pick up
Order
Anything we should know?
Paid
Inputs that fit the value
Fields marked as an email, a web address, a date or a duration get inputs made for them. A number with a range gets a slider and a yes-or-no gets a switch. Short lists of choices become radio buttons, long ones a searchable list.
Rich text, Markdown and code fields
Long text can be Markdown with a live preview or rich text with a toolbar. Code fields get a proper code editor, with highlighting for 22 languages.
Lists, tags and drag to reorder
Lists of things, like the members of a team, get rows you can add and drag into order. A plain word list becomes tags, and pick-several fields become checkboxes.
Key and value maps
For data where you pick the keys, such as a price for each country, the form gives you a key-and-value editor with a proper field for each value.
Either-or choices and fields that appear when needed
A field can offer a choice, for example a link or an uploaded image, and show the fields for whichever is picked. Other fields can stay hidden until an earlier answer calls for them.
Defaults, locked and hidden fields
New records start with their default values filled in. Locked fields show but can't be changed, and hidden fields keep their value out of sight.
Live validation and a raw JSON view
Problems show up as you type, written out in words on the field that has them. A JSON tab sits beside the form for pasting in a big block or fixing something by hand.
Cron, timezone, color and slug fields
A cron field shows the expression in words and lists the next few run times. Timezone and color pickers are built in, and a slug field fills itself in from the title.
Pickers that point at other records
A field can point at another record, or at a page, workflow or integration in your workspace, picked from a search box that browses folders.
Image and file fields
Mark a field as an image and editors get an upload button and a browser for your media library. The field stores the file's public address.
A form inside a form
Some settings depend on another choice. Pick the workflow a page runs, for example, and the form loads that workflow's input fields underneath.
Content Studio
Content Studio is where your team edits records, in the form or as JSON, and publishes them. Folders and search help on a big site.
Schema Studio
A visual editor for designing data shapes by hand, with the fields in a tree on one side and each field's rules on the other. The raw JSON is one tab away.
A studio for every piece
Workflows, pages, integrations and schedules each have a studio where you can read what your AI built and change it by hand. Most let you try it with real data too.
Media and files
One library for the images, video and documents your site uses, served from a separate file address.
A media library for images, video and files
Keep the logos, photos, videos and PDFs your site uses in one library with folders, and use any of them on a page or in a record.
Storage is 100 MB on Free, 5 GB on Pro and 50 GB on Agency. Files over the allowance keep serving; only new uploads are refused.
Media served from a global CDN
Each file gets a public address on a global network, so images and video load quickly wherever visitors are. Bandwidth is free.
Files shown by their real type
Tessryx checks what an uploaded file really is. Pictures, video, audio and PDFs display in the browser, and anything else is served as a download.
Uploads served from their own domain
Uploaded files are served from a separate domain, and any script hidden inside an uploaded SVG is switched off, so an upload can't be served as a page on your site.
Private screenshots for your AI
Screenshots an AI agent takes while checking its work stay private. They don't go into your media library or count toward storage, and they're deleted after a week.
Pages and APIs
A Tessryx site is a set of web addresses, each answered by its own workflow.
Pages and API routes
A Tessryx site is a set of web addresses. A visitor opens a page; the page's own scripts call routes to load more posts or save a sign-up. Every address is an endpoint backed by a workflow.
Pages and routes are capped at 100 on Free, 200 on Pro and 1,000 on Agency.
How it works
- An address and the logic behind it
- Routes take JSON
- Try it before it's live
Edge caching
Each page and route on Tessryx has a cache time. Within it, visitors get a copy from the network edge near them and the page's workflow doesn't run. Those visits are quick and don't use credits, since credits are only spent when a page is actually built.
How it works
- Traffic spikes
- After the cache time runs out
Dynamic routes with URL parameters
One page design can serve every post in a blog by reading the post's name from the address. An address that matches nothing gets an ordinary "page not found."
Form submissions and JSON posts
Forms and buttons on your pages can send things in, like a sign-up or a vote, and a workflow saves it or passes it along. Submissions are always handled fresh.
Pages built from your content
A page can be put together on the server from a record your team edits, and visitors and search engines receive finished HTML. It can read the published version or your working draft.
HTML, JSON, XML, CSV and RSS
An address can return a web page, data for your scripts, an RSS feed or a CSV export, with accented characters intact.
robots.txt, sitemap.xml and security.txt
Serve robots.txt and sitemap.xml, or anything under .well-known, at the addresses search engines and security tools look for. They can be generated from your own data.
Your own robots.txt takes effect on a custom domain, which comes with a paid plan.
Status codes, redirects and headers
A page can answer "not found" when a record is missing, or redirect visitors to a new address. It can also add a few headers of its own.
Links that work on every address
A page works the same on your free address and on your own domain, because each request tells it where its app starts and what its full address is.
Stale-while-revalidate for expired pages
When a cached page expires, visitors keep getting the last copy straight away while a new one builds in the background.
Preview a draft page
See what a page or route will return before it goes live, using your real data and settings.
"Not found" and "paused" pages
A missing page gets a clean "page not found." If a workspace runs out of credits, visitors see a neutral "temporarily unavailable" page that doesn't mention billing.
Workflows
Workflows hold the logic. They're written as steps that run in order, top to bottom.
Workflows
When a visitor opens a page on a Tessryx site, a workflow decides what they get. It's a list of steps. A step might look up a record or call a service, and the last one puts the page together.
How it works
- Steps switch on the blocks they need
- Later steps read what earlier ones saved
- One expression produces the output
- Pages and schedules can share it
Try it
An expression over a league's standings
$standings
{ "league": "Monday Night 8-Ball", "week": 9, "teams": [ { "name": "Rack Attack", "wins": 7, "losses": 2, "points": 18 }, { "name": "Cue Tips", "wins": 6, "losses": 3, "points": 16 }, { "name": "Scratch & Win", "wins": 6, "losses": 3, "points": 15 }, { "name": "Side Pocket", "wins": 4, "losses": 5, "points": 11 } ] }
Expression
$standings.teams^(>points)[0].name
Result
"Rack Attack"JSONata and JavaScript expressions
Wherever a value has to be worked out, like a total or a filter, there's a small expression. Most are JSONata, a language for reshaping data, and the rest are JavaScript.
Read and write records
A workflow can look up a record, save a new one, list a folder or count what's in it. A sign-up form, for example, posts to a route whose workflow saves the record.
Loops and parallel steps
A step can repeat for each item in a list, or for as long as a condition holds. Steps that don't depend on each other can run at the same time.
Checks and error handling
A step can refuse to run unless something is true, or skip itself when it isn't needed. After a failure, the workflow can carry on and let a later step deal with it.
Sub-workflows
One workflow can run another and use what it returns. A page can be assembled from a few smaller workflows, one for the header and one for the rest.
Generated images and files
A workflow can draw an image, like a share card for a new post, and publish it to your media library. It can also save a picture from another web address.
Typed input
A workflow can declare the input it expects. Each run is checked against it, and wherever a person starts the run, they get a form to fill in.
Run time limits
Each run has a time limit, and a run that hangs is stopped when it gets there. Longer jobs run as a chain of runs.
Free runs up to 60 seconds, Pro up to 2 minutes and Agency up to 5 minutes.
AI inside your app
Models can do work inside your app too, either answering once or working through a job with tools.
AI agents with tools
An AI step without tools answers once and hands back text. Give it tools and it keeps going, turn after turn. It can call your integrations or run another workflow, build and edit things in your workspace, or open your site in a browser and look at it, until the job is done.
How it works
- You choose its tools
- It's limited to the folders it's given
- It can use a key without seeing it
- Jobs longer than one run
AI steps in a workflow
Any step can ask a model to write or summarize something, and the answer flows into the rest of the workflow. It runs on your own model account, with no markup from Tessryx.
Scoped agents
An agent that can build is limited to the folders it was given. It can't add to that list, and whatever it creates or connects has to fit inside it.
Keys an agent can use but never see
A workflow that holds a key can be handed to an agent as a tool, like one that calls an image service. The agent can call it but never gets to read or reuse the key.
Long-running agents
An agent can keep working across many runs. At the end of a turn it hands its conversation to the next run, and older turns get summarized to keep the conversation small.
Live progress and a stop switch
A long agent can write a progress report after each turn for a page to show. The person who started it can also stop it partway, without waiting for the run to end.
Agents that look at your pages
An agent can open your site in a real browser and check its own work. It gets screenshots at desktop and phone sizes, plus a list of any text that overlaps or runs off the edge.
Your own model server
Point an AI step at a model server you run yourself, as long as it speaks the same protocol as the provider. Your key is sent to it as usual.
Schedules
Run a workflow on a timer, whether or not anyone visits.
Cron jobs and scheduled tasks
A schedule runs a workflow on a clock, whether or not anyone visits. The pool league template uses one to pull new results every morning; other sites rebuild a summary every hour or send a digest on Mondays.
Free includes one daily scheduled job. Pro has 10 that can run every 15 minutes, Agency 50 that can run every minute.
How it works
- Point it at a workflow
- Test it with Run now
Try it
The cron field from the schedule editor
Timezone
Examples
Schedule (cron)
Next runs load in your timezone.
The next 7 days
Run a schedule now
Fire a schedule on the spot to test it, without waiting for its next turn. You can switch it on or off whenever you like.
Jobs longer than one run
A scheduled job that's too big for one run, like working through thousands of records, can run as a chain. Each run saves a bookmark and the next one starts from it.
Integrations and secrets
Your workflows can call outside services, and the keys for them are stored write-only.
API integrations
Connect a service like Stripe or your email provider once, and any workflow can call it. Your AI sets up the call and you paste in the key.
Authentication for outside services
Calls sign in to the other service with a token, a password or a key, and can sign each request the way X (formerly Twitter) requires. The credential comes from a stored secret.
Write-only secrets
Once a key is saved, no one can read it back, including you and your AI. You see its name and the last few characters, and rotating it means pasting a new value over the old one.
Sign-in and access
Any page can stay public or sit behind a sign-in, and a team-only page opens just for people in your workspace.
Visitor sign-in for your site
A page or route on a Tessryx site can require a sign-in. A visitor who isn't signed in goes to Tessryx, signs in with an email and password or with Google, approves your site the first time, and comes back to the page they asked for.
On every plan, and people who sign in to your site never use a seat. Sign-in on your own domain needs a plan with custom domains.
How it works
- Gate the pages that need it
- Anyone, or only your team
- Choose what everyone else sees
Members areas with each visitor's own data
Let anyone who signs in into a members area and show each person their own things, like saved items, without learning who they are.
Admin pages only your team can open
Build an admin area into your live site that opens only for people with a role in your workspace. Remove someone's role and they're out within seconds.
Only workspace members get in, and seats are 1 on Free, 3 on Pro and 10 on Agency.
What signed-out and refused visitors see
Decide page by page whether a signed-out visitor goes straight to sign in or sees a page with a sign-in button. A visitor who isn't allowed can get "access denied" or be sent somewhere else on your site.
Pages that know who's signed in
Add one script tag and the page knows whether the visitor is signed in as soon as it loads. It can send them to sign in without losing what they typed, and show team-only buttons to your team alone.
Private visitor ids and a plain consent screen
Before a first sign-in, Tessryx tells the visitor which site is asking and that it gets an anonymous id, with no email or name. The id is different on each site, so two sites can't link up the same person.
Preview a page as a pretend visitor
Before publishing, your AI can render a members-only or team-only page as a made-up visitor with whatever roles you choose.
Domains and hosting
Each workspace starts on a free web address, and your own domain can take over when you're ready.
Custom domains with automatic HTTPS
Every Tessryx workspace starts on a free tessryx.app address. To put a site on your own name, claim the domain in your dashboard and add two records at your DNS provider. One proves the domain is yours and the other points it at Tessryx.
Custom domains come with a paid plan: 2 on Pro, 10 on Agency, unlimited on Scale. More are $8 a month each.
How it works
- Claim it
- Add the records
- Wait for the certificate
- Point it at an app
A free yourname.tessryx.app address
Each workspace gets a secure web address as soon as something is published, with no domain to buy. Pages there show a small "Served by Tessryx" badge and stay out of search results.
Point a domain at one app
Choose which project a domain shows and which page is its home page. Several sites can share a workspace, because each domain only reaches its own project's pages.
Needs a custom domain, so a paid plan.
Root domains like yourbrand.com
A bare domain like yourbrand.com works if your DNS provider can point a bare domain at another name, as Cloudflare, Route 53 and DNSimple can. If yours can't, the www address does the job and your registrar forwards the rest.
Same as custom domains: a paid plan.
Extra domains, $8 a month each
On Pro and Agency you can add domains one at a time without moving up a plan. Agencies use this when a new client site needs its own.
Pro and Agency. Scale already includes unlimited domains.
Versions and safety
Saves become numbered versions you can go back to, and your AI can check what depends on a piece before it changes it.
Version history and rollback
Saving a page, a workflow, a schema, an integration, a schedule or an app creates a new numbered version and keeps the earlier ones. Visitors get whichever version you published.
How it works
- Publishing is its own step
- Pieces follow live or draft
See what depends on what before you change it
A Tessryx app is built from separate pieces, and each one declares what it uses: this page reads that record, this workflow calls that integration. Tessryx stores those links as a graph your AI can query from either end.
How it works
- Ask in either direction
- Preview before acting
- custom domain
- endpoint
- workflow
- datafile
- schema
$ analyze_resource --kind workflow --resource birthday/theme --hypothetical delete
deployable: false · errors: 7
- errorworkflow:birthday/home-render would break: steps[0](theme).sub_workflow.workflow references "birthday/theme@published", which would no longer exist
- errorworkflow:birthday/invite-render would break: steps[0](theme).sub_workflow.workflow references "birthday/theme@published", which would no longer exist
- errorworkflow:birthday/admin-render would break: steps[0](theme).sub_workflow.workflow references "birthday/theme@published", which would no longer exist
- errordynamic_endpoint:birthday/home would break: depends on birthday/home-render, which would break
- errordynamic_endpoint:birthday/i/:token would break: depends on birthday/invite-render, which would break
- errordynamic_endpoint:birthday/admin would break: depends on birthday/admin-render, which would break
- errorcustom_domain:birthday.nickpage.tech would break: depends on birthday/home, which would break
Drafts and publishing
Your changes are drafts until you publish them. You can try a draft with real data first and then publish the version you checked.
Publishing refuses broken references
If a page or workflow points at something that doesn't exist or was never published, publishing it is refused, with the reason. Drafts can still be saved in any order.
Take something offline without deleting it
Take a page, a schedule, an app or a record offline and keep everything, ready to bring back later.
Rename anything in place
Rename a page, a workflow, an integration, a schedule, an app or a record where it is, and its history comes along.
Apps: one project, managed as a unit
An app gathers a project's pieces, from its data to its pages and schedules, into one place you open and manage together. New pieces in the project's folder join automatically.
App Studio
Opening an app lists its pieces in one sidebar and opens each in its usual editor without leaving the project. A short setup checklist ticks off each step once it's done.
Export and import an app
Download a whole project as one file and import it into another workspace you belong to. Before anything is created, you see what it will add and what's already there.
Start from a template
Pick a ready-made app, fill in a short form, and Tessryx builds a working copy in your workspace and runs its first data sync. Today there is one template: a pool league site.
The template's daily sync uses a schedule, and Free includes one.
Delete an app, or everything in it
Deleting an app usually removes just the grouping and leaves its pieces alone. A separate action deletes every piece and then the app, once you type its name to confirm.
Runs, usage and billing
Each run is recorded with what it cost, and a failed run shows the step that broke.
Run history and step traces
Each run is listed with how it went. Open one to see the steps, what each read and what it got back, and your AI can read the same history to debug its work.
Free keeps the step trace only for runs you start and for failed runs.
Run a workflow on demand
Run any workflow by hand from Workflow Studio, or ask your AI to, for a test or a one-off job. You don't need a website for this.
Credits for runs
Tessryx charges for the work your logic does, in credits. A typical page build is 1 credit, and a longer job costs 1 credit per 10 seconds, whatever started it.
A month of credits is 10,000 on Free, 100,000 on Pro and a million on Agency.
See where your credits went
A live balance, a chart of credits used each day, and a breakdown by workflow, page, domain or trigger.
Low-credit warnings
You'll hear before you run out: a dashboard note at half, emails at 20% and 10%, and one more when credits hit zero.
No overage bills
Credits are prepaid, so there are no overage bills. If they run out, runs pause until you top up, while cached pages, published records and media keep serving.
Credit packs that never expire
Credit packs are one-time purchases, available on every plan including Free. Bought credits don't expire, and on a paid plan unused monthly credits carry over for a month.
Plans and limits
Plans differ in their limits. Where a feature isn't on Free at all, like custom domains, it says so on this page.
Change plans without losing work
Change plans from the dashboard whenever you like. Moving to a smaller plan doesn't delete anything; what's over the new limits waits until you upgrade again.
A grace week when a card fails
If a subscription payment fails, your sites keep serving for a week while you fix the card. Once it goes through, everything comes back with no fee.
Plain messages at a plan limit
If something would go past your plan, the message says which limit and how to raise it. Your connected AI is told not to keep retrying.
Free sites stay up while they're used
The free plan has no trial clock. A free site that's in use stays live; only an account with no activity for 90 days gets a warning before anything is removed.
Team and account
Teammates get one of five roles. Your own sign-in can use two-factor, and you can see every device that's signed in.
Workspaces
Each workspace has its own apps, content, domains, team and bill. You can belong to several and switch from the account menu.
Five team roles
There are five roles, from Viewer, who can look but not change anything, up to Owner. A copywriter can edit and publish content without being able to change how the site works.
Invite your team
Add people by email and pick their role. They'll see the invitation on their dashboard the next time they sign in with that address.
Seats are 1 on Free (the owner), 3 on Pro and 10 on Agency, so inviting someone starts on Pro. People who only sign in to your sites never use a seat.
Seats, and what a smaller plan does to them
Your plan sets how many people can build in the workspace. After a downgrade, the most recently added teammates lose access until there's room again; nothing about them is deleted, and the owner keeps access.
Free 1, Pro 3, Agency 10.
Two-factor sign-in
Turn on two-factor sign-in and every login also asks for a short code sent to your email. Turning it off again needs a fresh code too.
Active sessions
The Security page lists the devices signed in to your account, with where and when, and signs out any one of them or all the others.
Email and password, or Google
Sign up with an email and password or with Google, and add the other later if you want both. Password reset links never reveal whether an address has an account.
Connected apps you can revoke
Each AI assistant you've connected is listed with the workspace it can reach and when it was last used. Disconnecting one takes effect at once.
What Tessryx doesn't do
These are the ones people ask about most. Where there's a workaround, we've put it under the item.
Crossed off lately Tessryx couldn't do these until recently.
- Agents that look at your pagesOctober 2026
- Live progress and a stop switchOctober 2026
- Jobs longer than one runSeptember 2026
- Scoped agentsSeptember 2026
- Lists, paging and exact countsSeptember 2026
- Custom domains with automatic HTTPSJuly 2026
- AI steps in a workflowJuly 2026
No database queries or joins
Records are JSON documents in folders. You can fetch one, list a folder in date or name order, page through it and count it, but there's no query language, no joins across records and no full-text search.
Model it the way you'd model it for DynamoDB, with folders shaped around how pages read the data. A workflow can write one item into every folder it belongs in (a fan-out write), and a folder count gives a tally without reading the records. For real queries, call a database you run through an integration.
Apps don't export as code you can run elsewhere
An export is a zip of definitions that another Tessryx workspace can import. There is no self-hosted version and no source-code export.
The formats are open (standard JSON Schema, with logic in JSONata or JavaScript), so what you built can be read outside Tessryx even though it won't run there.
No drag-and-drop page builder
Pages are built by your AI and edited by describing the change to it, or by hand in Workflow Studio. Content is edited in forms, never by dragging boxes around a page.
No native mobile apps
What you build runs in the browser, including on phones. It isn't an app-store app.
No built-in email sending or payments
There's no email block and no checkout of its own.
Connect an email service or Stripe as an integration; the keys live in Secrets and your AI wires the calls.
No "run when something changes" triggers
A workflow runs when a page or route is requested, on a schedule, or when someone starts it. Saving a record or publishing something does not start one.
Receive outside events on a route that accepts posts, or check for changes on a schedule.
Incoming webhook signatures can't be checked
A route gets the parsed JSON body, not the raw bytes, and expressions can't compute an HMAC or read a secret, so signature checks like Stripe's aren't possible inside a workflow.
Query strings, headers and cookies never reach your logic
A page's workflow sees the parts of the address it declared, a JSON body and, behind a sign-in, who the visitor is. It never sees ?page=2 style parameters, request headers, cookies or the visitor's IP.
Put changing values in the path, like /posts/page/2, or send them as JSON.
Plain HTML form posts aren't read
Routes accept JSON bodies only, so a classic form-encoded post isn't parsed. Only GET and POST are supported.
Submit the form from the page with fetch and JSON. Pages your AI builds on Tessryx already work that way.
No websockets or streaming responses
Each request gets one complete response. There are no websockets, server-sent events or streamed pages.
Poll a route from the page, or let a long agent write progress to a record the page reads.
JavaScript in workflows is calculation only
A JavaScript expression can compute anything, but it can't fetch, use npm packages, set timers or touch files.
Outside calls go through integrations, which a step can use and pass on.
AI steps run on Anthropic models only
The AI step speaks Anthropic's API, with your key, or a server you run that speaks the same API. Prompts are text; images reach the model only through tool results, and there is no structured-output mode.
Call another provider's API as an ordinary integration. That covers a single answer; the tool-calling loop only runs in the AI step.
Integrations send JSON, and only to the public internet
Request bodies are always JSON, so form-encoded, XML and file-upload calls aren't possible. Private and internal network addresses are refused, a 4xx or 5xx is a result rather than a failure, and nothing is retried for you.
Put a small public endpoint in front of a private service, and check $response.status in the workflow.
No "connect your account" sign-in for outside services
Integrations can't run an OAuth 2.0 authorization flow or refresh tokens on their own. A credential is a static value you paste into a secret.
Store a long-lived token as a bearer secret and rotate it when it expires.
Every media file is public
Anyone with a file's address can open it. A members-only page doesn't protect the images or PDFs it links to.
Keep private material out of media, and put sensitive data behind a signed-in route.
No image resizing, thumbnails or video transcoding
Files are served exactly as uploaded, up to 100 MiB each. HEIC and TIFF download rather than display, and video isn't converted or streamed adaptively.
Upload web-ready sizes and formats; for long video, host it on a video service and embed it.
Visitors sign in with a Tessryx account
Login with Tessryx is the sign-in for your site. You can't plug in your own user directory, limit a page to an email domain, list who has signed in, or sign a visitor out from the server.
Use the private visitor id to keep each member's records, and workspace roles for anything admin.
No SSO, custom roles or audit log yet
Team sign-in is email and password, or Google. Signing in through your own identity provider (SAML or OIDC), SCIM, roles beyond the five built in, per-folder permissions and an audit log aren't built.
SSO is part of the Scale plan, set up with us when a team needs it.
Two-factor is an emailed code only
There's no authenticator app, passkey, SMS or hardware key, no backup codes, and no way to require two-factor for a whole workspace.
Records and media have no version history
Pages, logic and schemas keep their newest 10 versions plus the published one. A content record keeps only its saved and published copies, and a replaced or deleted file is gone.
Export the app now and then if you want a copy of its content to fall back on.
Publishing doesn't clear cached pages
There is no purge button. A change shows once the cached copy runs out, so the cache time is the longest an edit can take to appear.
Keep cache times short while a page is changing, and raise them once it settles.
No catch-all routes or automatic redirects
Each part of an address matches one path segment, addresses are lowercase, and renaming a page leaves no redirect behind.
Give each depth its own route, and send a 301 from the old address with a small workflow if it matters.
No built-in translations
Fields have no language versions of their own.
Model languages in the schema, for example an object keyed by language code, and have pages pick the right one.
No rate limits or bot checks for your own pages
Tessryx doesn't throttle visitors to your site, and you can't add a captcha to a form. A flood against a page that isn't cached runs its workflow every time.
Cache the pages you can. A cached visit doesn't run anything, so a popular page stays cheap.
Free to start
Connect your AI and build one thing
Most of what's on this page is on the free plan, and where something isn't, it says so. Connecting your AI takes a minute.
Using a different AI? Create a free account and connect it from your dashboard.