Website · Docs · Agents · Examples · Changelog
Fillo is headless form infrastructure. You build a form in the hosted editor or define it in code, then render it inside your own product with your UI — React, Vue, Svelte, Astro, or plain browser JavaScript — instead of dropping in an iframe. One shared schema drives the builder, the renderers, API validation, and the responses grid, so a form looks and behaves like part of your app.
Files go browser-direct into storage you own (Google Drive, Box, or an S3-compatible bucket), resumable where the provider supports it. Responses land in a schema-aware grid with search, file downloads, a detail drawer, and CSV export, and can be delivered by signed webhooks, Google Sheets, Notion, Zapier, or email.
This repository holds the public SDK packages and the coding-agent skill. The product itself lives at fillo.so.
| Package | npm | What it is |
|---|---|---|
@usefillo/core |
npm · packages/core |
Framework-agnostic form schema, validation, conditional-logic engine, prefill, formatting, JS client, and the browser-direct upload protocol. Zero framework dependencies. |
@usefillo/react |
npm · packages/react |
Headless React renderer, hooks, upload UI, and an optional default stylesheet you can override or replace. |
@usefillo/dom |
npm · packages/dom |
Framework-neutral DOM renderer, custom element, and a standalone browser bundle for Vue, Svelte, Astro, and vanilla apps. |
@usefillo/cli |
npm · packages/cli |
fillo — start a workspace, stage and publish forms, and install the Agent Skill from your terminal. |
@usefillo/mcp |
npm · packages/mcp |
MCP server — provision, scaffold, publish, and query forms from a coding agent. |
The canonical coding-agent skill (the same bundle the CLI installs) lives in
plugins/fillo/skills/build-with-fillo.
All packages are MIT licensed.
Install a renderer and drop a published form into your app. @usefillo/react
and @usefillo/dom both re-export the parts of @usefillo/core you need, so you
rarely install core directly.
// React / Next.js
import { FilloForm } from "@usefillo/react";
import "@usefillo/react/styles.css"; // optional default theme — or bring your own
<FilloForm formId="cust-feedback" onSubmitted={(responseId) => confetti()} />// Vue, Svelte, Astro, or plain browser JavaScript
import { createClient, defineForm, renderForm } from "@usefillo/dom";
import "@usefillo/dom/styles.css";
const client = createClient({ key: "pk_live_…" });
const form = defineForm({
id: "cust-feedback",
pages: [{ id: "p1", blocks: [
{ id: "email", kind: "email", label: "Work email", required: true },
{ id: "message", kind: "long_text", label: "What should we know?" },
] }],
});
renderForm("#fillo-form", { form, client, onSubmitted: (id) => console.log(id) });Fillo ships a provider-neutral Agent Skill that teaches your agent to build, embed, style, sync, and verify a Fillo form. Install it into a project:
npx @usefillo/cli@latest skill installThen point your agent at the setup flow. From a Build with AI handoff in the
product the CLI also prints a one-line npx @usefillo/cli agent bootstrap …
command that installs the skill and connects the live workspace in a single run.
See fillo.so/agents for the full agent path and
fillo.so/docs for the reference.
- Website — fillo.so
- Docs — fillo.so/docs
- Agents — fillo.so/agents
- Examples — fillo.so/examples
- Changelog — fillo.so/changelog
This repo is a read-only mirror of the public SDK packages. They are developed in a private monorepo and mirrored here on release, so the code you see is the same code published to npm. History here is disposable: the mirror is force-pushed by an automated job on every release, so don't fork from a specific commit expecting it to stay put — depend on the npm packages instead.
Issues and questions are welcome here — see CONTRIBUTING.md. Pull requests against package code can't be merged directly, since the source lives upstream; open an issue and we'll bring the fix through the private repo.
Note on the account name. This mirror currently lives at
github.com/jacobfunch/usefillowhile theusefilloGitHub organization is being claimed. Once it is, the repo will be transferred to the org; GitHub keeps the old path redirecting, so existing links and clones keep working.