Build the business,
skip the plumbing
Every template starts from one starter with sign-in, user consent and integrations already wired. Build a business on it, then publish it for anyone to fork.
Auth comes done
npm create forkable@latest copies the starter, installs it and runs the demo. Here is what is already handled before you write a line.
Sign in with One
The authorize and callback routes, PKCE, state and the code exchange.
src/connect.tsEach user's own grant
Every call runs on the signed-in user's Connect grant. No shared admin key.
runActionThe consent ask
Each action, its access level and the line your user reads before they agree.
connect.manifest.jsonA demo with no keys
Runs on the Acme Inc sample with no account and exits 0.
npm startGrant enforcement
A call outside the user's grant is refused with a 403 before the provider sees it.
403Notes for your agent
AGENTS.md, build skills, a runtime agent to copy and a go-to-market kit.
AGENTS.mdTry it now
No account and no keys. It installs and runs the demo on the Acme Inc sample.
npm create forkable@latest my-business -- \--for "dental clinics" --in "Madrid"
Go live with real sign-in
Make one Connect app in the One dashboard (Developers, Connect, New app). Set its values in your environment, then run npm run dev. Never commit them.
ONE_CLIENT_IDONE_CLIENT_SECRETONE_CONNECT_KEYONE_REDIRECT_URI
Give your agent every integration
Install the One CLI globally, or add One's MCP server if you'd rather not install anything. Either one connects your coding agent to One's knowledge base of thousands of integrations, so it writes each one correctly the first time.
Install it once, globally. one init signs you in and installs the One skill into Claude Code, Claude Desktop and Codex, or Cursor, Windsurf, Kiro and others if you pick them. Works with any agent that can run a shell.
npm install -g @withone/clione init# then tell your agent:# Please run "one onboard"
Only want docs and code, never a live call? Turn on Knowledge only mode on the sign-in screen.
How your agent adds a tool
The starter's add-integration skill, which your agent follows on its own.
- 1
one actions find <platform> "<intent>"Finds the exact action, with its docs.
- 2
one actions load <actionId>Reads any part of the docs it still needs.
- 3
connect.manifest.jsonAdds the action with the narrowest access and a reason your user reads.
- 4
oneConnect.runAction(...)Calls it on the user's grant. Never a hand-built request.
Send it as a template
Templates ship in create-forkable, so anyone can fork yours by name. A maintainer reviews each pull request against the same checklist.
Fork the repo
withoneai/forkable on GitHub, on a new branch.
Add your template
Copy it into create-forkable/templates/<id>. The id is what people type.
Fork it once
Run the CLI from your clone and check the copy works on its own.
Open a pull request
The PR template has the checklist. Add who it is for, its tools and a screenshot.
The checklist
forkable check will run this for you. Until it ships, run it by hand.
- npm start runs the demo with no .env and exits 0
- npm run typecheck passes
- The manifest matches every runAction call, each with access and a reason
- Access is the narrowest that does the job
- No secrets, keys or .env anywhere, git history included
- Sample data is Acme Inc only
- AGENTS.md, agents/, gtm/positioning.md and forkable.json describe this business
- MIT, with a LICENSE file
Check the fork from your clone
cd /tmpnode ~/forkable/create-forkable/bin/create-forkable.mjs \try-it --template <id>
Not sure yet?
Open a Template idea issue first. Say what it does, who it is for and what it never does.