Every prompt, tool call, and petition template behind an O-1A, EB-1A, or NIW draft is published. Audit it, fork it, or self-host with your own Anthropic key.
One repo — Two licenses — Zero telemetry when self-hosted
BUSL 1.1 → Apache 2.0 after four years.
Your case never touches our servers.
O-1A · EB-1A · NIW.
An AI that drafts a legal filing has to earn trust, and you can't earn it behind a curtain. Read the system prompt, the tool schemas, and the LaTeX skeleton — then decide.
Self-host with your own Anthropic key. Your prompts and case data go straight to Anthropic — we're not in the loop.
Agent turns, tools, petition templates, exhibit review, letters — all in the tree. Fork, tune, or audit.
No black box for the part that matters. If a section drafts badly, you can see exactly why and fix it.
Everything that drafts a petition is open. Everything that runs the hosted business — Stripe, referrals, the lawyer network, email — lives in a /ee folder under a proprietary licence. Self-hosters get working stubs.
The boundary is enforced by CI. Delete /ee and the app still builds and still drafts petitions — it just doesn't send emails or charge cards.
Supabase for storage. Bun for the dev server. Your own Anthropic key. That's the whole stack.
# clone git clone https://github.com/Job-Protocol/visaworker.git cd visaworker # install bun install # wire Supabase (local or hosted) supabase link --project-ref $YOUR_REF supabase db push # drop your Anthropic key in .env BYOK_ENCRYPTION_KEY=$(openssl rand -hex 32) # go bun run dev
Paste this into Cursor, Claude Code, Codex, or any shell-capable agent. It installs, wires Supabase, asks for your keys, and boots the dev server.
Self-host VisaWorker for me. It's a TanStack Start app on Cloudflare Workers, Supabase for data, BYOK Anthropic key. 1. Clone https://github.com/Job-Protocol/visaworker and cd into it. 2. Run `bun install` (or `npm install` if bun is missing). 3. Create .env from .env.example. Ask me for: - Supabase URL, publishable key, service-role key, and project ref - Anthropic API key Then generate BYOK_ENCRYPTION_KEY with `openssl rand -hex 32` and write it to .env. 4. Run `supabase link --project-ref <ref>` and `supabase db push`. Show the migration list first. 5. Run `bun run dev` and report the preview URL. Rules: - Never commit secrets. Confirm .env is in .gitignore before any git add. - /ee is proprietary and stubbed in the open build. `ee_required` errors are expected; note and continue. - Ask before installing anything outside the lockfile.
Same codebase either way. The hosted version funds the open one.
$0 + your Anthropic bill
Everything in the open repo. Your infra, your key, your data. Community support.
Flat, per petition
Managed billing, human support, and a free strategy call before you start.
Self-hosted, your prompts hit Anthropic directly with your key — nothing routes through us. Hosted, BYOK keys are encrypted at rest with AES-256-GCM before they touch the database, and the source is public so you can verify it.