What you preview is what the server enforces.
Validation, conditions and calculations run in one Rust engine. The builder runs it in the browser through WebAssembly; the server runs the same code when the submission arrives. There is no builder-only approximation to drift from the truth.
Browser copy
Server copy
Try it: a passport number of 6 to 9 letters and digits. This page imitates the rule in a few lines of script; in InkAsk both copies come from the one engine.
Start from whatever you already have.
Every entry point lands in the same builder, with the same undo history, so you can switch between them halfway.
-
A sentence
Tell the copilot what you need to collect. It drafts the form, shows the change as a diff, and applies it only when you say so.
Describe a form -
A template
Begin from a saved form or a starter layout, then change any field.
Browse templates -
A document or PDF
Upload the paper form your team uses today. InkAsk reads its fields and rebuilds it as a working form.
Import a PDF -
A Form.io project
Bring form JSON, templates and MongoDB submissions across. You keep your data, not Form.io's code or quirks.
Read the import guide
Every form is also a tool for agents.
Publish a form and InkAsk's MCP server offers it as a tool. An agent fills it with the same fields, the same rules and the same error messages a person sees, and its submission lands beside theirs.
{
"tool": "submit_visa_intake",
"arguments": {
"fullName": "Amira Haddad",
"passportNumber": "X1234",
"nationality": "JO"
}
}
→ passportNumber: Passport number must be 6 to 9 letters and digits.
Example data. The error is the one the form above shows a person.
Put the builder inside your own product.
Embed the builder or the renderer with the npm package, the React and Vue wrappers, or the <ik-builder> web component. It takes your brand tokens and can hide InkAsk entirely.
import { createBuilder } from '@inkask/builder';
createBuilder(document.querySelector('#editor'), {
form: await api.forms.get('visa-intake'),
theme: 'tailwind',
whiteLabel: true,
});
@inkask/builderBuilder, copilot and preview@inkask/rendererRespondent forms, 44 component types@inkask/react@inkask/vueFramework wrappersREST API · OpenAPIForms, submissions, actions and roles
Choose the copy you keep.
-
Community
The whole platform under the AGPL. Run it on your own servers with Postgres.
Self-host -
Cloud
We run it for you: updates, backups and the AI features switched on. Free to start, within monthly limits.
Start on Cloud -
Enterprise
Commercial licence, white-label and support, sold through our partners.
Find a partner