Skip to main content

Quick Start Guide

Start with an offline walkthrough, then choose a real execution environment. CrewForm is MIT licensed and free to self-host. Paid plans cover CrewForm Cloud hosting.

1. Try the workflow without an account

Install Node.js 20+ and npm, then:
This uses the real sequential pipeline engine with scripted, simulated outputs: review a supplied fictional patch, critique the finding, and export a versioned review pack. It makes no model requests, invokes no native agent and needs no provider key, database or login. The pack contains a source reference, an explicit limitation and humanReview: required. It does not measure model quality. Use --json for machine-readable pipeline results. The generated review-pack.json contains the simulated artifact; inspect it before moving on.

2. Choose real execution

  • Hosted app: open CrewForm Cloud, create a workspace, then follow Run Your First Agent System.
  • Local agent CLI: follow Local Agent Execution to use a supported installed agent with its own login, or use an API provider/Ollama. Native account eligibility and limits still apply. There is no automatic API fallback.
  • Full self-hosted app: use the supported stack below.
To check an installed agent without a model request:
Diagnostics check Node and executable availability. They do not authenticate your agent or prove that your subscription permits a particular use.

3. Run the full app locally

Install Docker and the Supabase CLI, start Docker, and run from the repository root:
In a separate terminal:
Open http://localhost:3000 and register a local account. CrewForm requires the complete Supabase stack, including Auth, Storage, Realtime and Edge Functions. The bootstrap handles historical migration numbering and writes ignored local configuration with restricted permissions. It leaves linked production state alone. For production configuration, host processes, ports and shutdown instructions, follow Self-hosting CrewForm. Provider-key encryption uses the server-side API_KEY_ENCRYPTION_KEY; never put an encryption secret in a VITE_ variable, which would expose it to the browser.

Troubleshooting

Next steps