1. Before you start (once)
You need Node.js 22 or newer, git, and Claude Code installed and signed in. Claude Code builds the app under your own login, so there is no API key and, on a subscription, nothing extra to pay.
git clone https://github.com/kishormorol/karigor cd karigor npm install -g pnpm # if you do not have it pnpm install && pnpm build alias karigor="node $PWD/packages/cli/dist/bin.js"
No Claude Code? Use a free local model with --adapter ollama or an API key with --adapter claude. To watch the whole process with no model and no cost, add --adapter demo to any command.
Not technical? You can skip all of this. Ask someone who is to host Karigor's chat page, on a server or a spare computer. They send you your own link, or the page lets you join with just your name. Then you describe, build, use and grow your app by chatting, on your phone or laptop, with nothing to install. Your projects are yours: other people on the same page can't see them. The AI is the host's free open-source model, or your own Anthropic key if you have one.
Hosting it for others
On a server with Docker, from the cloned repository:
KARIGOR_TOKEN=$(openssl rand -hex 24) docker compose up -d docker compose exec ollama ollama pull qwen2.5:7b
Open http://<host>:4321/?token=<KARIGOR_TOKEN> yourself. That link sees every project, so keep it to yourself. Give everyone else their own link from People on the page; theirs opens only the projects they start. To let anyone who reaches the page join with a name, set KARIGOR_SIGNUP=open. Builds run code the AI wrote on your server, so open sign-ups only where you trust who can reach it.
The free model needs no key. To use Claude instead, set KARIGOR_ADAPTER=claude. Add ANTHROPIC_API_KEY to pay for everyone, or leave it unset so each person enters their own. A key entered on the page stays in their browser tab and in the memory of their run, never on disk.
2. Describe your app
The idea is the only thing Karigor needs, and it shapes everything that follows. Write it as you would explain it to a person who will build it for you.
- Who uses itand what each kind of person may see or do
- What it keeps track oforders, students, products, payments
- The jobs it must doin the words you use at work
- Local detailscurrency, language, payment methods, phone or computer
A grocery app
Too little to go on. Karigor will guess who uses it, what it tracks and what matters, and record each guess.
A shop counter for my small grocery in Dhaka. Only I sign in, on my phone. I add products sold by piece, kg, gram, litre, packet or dozen, with a price and how many I have. At the counter I enter what a customer bought; it adds up the total in taka, I choose cash or bKash, and the stock goes down. A home page shows today’s total, split into cash and bKash, and the products running low. I can cancel a sale I entered by mistake, and the stock goes back.
Who signs in, what it keeps, the jobs in your own words, and the local details: taka and bKash.
A system for my small clinic in Mirpur. The receptionist registers patients and books visits with our three doctors. Each doctor sees their own visits for the day and writes notes and prescriptions; the receptionist must not read the notes. The accountant takes payments in cash or bKash, prints a receipt, and sees what is still owed. I, the owner, see each day’s visits and takings by doctor, with a chart for the month, and I add or remove staff.
Every kind of person, and what each may and may not see. The design plans for them from the start.
Karigor plans the whole product, then splits it into stages. Stage 1 is the smallest version someone can use end to end. Each later stage adds one area you would recognise, like “Billing” or “The owner’s dashboard”. A small idea is just one stage.
Or start from a ready-made idea. 40 are already written this way for common needs in Bangladesh, from a shop counter to a samity. List them with karigor starters, then add only what is different for you:
karigor new --starter samity "We collect every month, not every week." --run
3. Start the build
karigor new "your idea here" --run --port 3300
It prints the project’s id, like p-mvin1bja-92f2. Keep it: every other command needs it. Then, with no input from you:
- It writes a specification and splits it into stages, with every assumption recorded.
- It designs the system: who uses it, what each may do, and its parts.
- It splits stage 1 into small pieces, at most 15.
- A developer builds each piece with tests and browser journeys; a reviewer and a skeptic check it.
- Every journey runs again on a brand-new database, then a checked preview, a verified rollback, and release.
| What you see | What to do |
|---|---|
| Your Claude usage limit ran out | karigor resume <id> |
| The computer slept or the terminal closed | karigor resume <id> |
| It is waiting for a setting | karigor setup <id> |
| It stopped with work set aside | karigor reopen <id> |
4. Give it what only you can provide
Some apps need things only you can choose or own: the owner’s email, a passcode, a database account. Karigor makes its own secrets itself, and asks you for the rest in plain words. It hides what you type and stores values only where the app runs.
karigor setup <id>
5. Open and use it
karigor serve <id> --port 3300 karigor admin-link <id> you@example.com "Your name"
Open http://localhost:3300 and the link admin-link prints to choose your password. Add your team from People; each gets a one-time link to send by WhatsApp, SMS or email. Leave serve running: it keeps the app up, checks its libraries each day and fixes problems on its own.
Try everything. Use it as you would on a busy day, on your phone too. Make mistakes on purpose, undo things, and write down whatever is wrong, confusing or missing.
6. Grow and change it
Build the next stage on top of the live app, or ask for a change in your own words, one thing per message. Your data stays through every release.
karigor grow <id> # the next stage, then it stops so you can try it karigor grow <id> --all # every remaining stage karigor feedback <id> "Add a page that shows each month's total, with cash and bKash separately." karigor correct <id> a3 "Prices should allow paisa, like 62.50."
7. Put it online
For a public address, use Vercel’s free tier, with a free Turso database so the data survives on the internet.
karigor new "..." --deploy vercel --run karigor setup <id> # asks for the database address and token karigor watch <id> --every 15 # checks the live site and fixes problems
Command summary
| Command | What it does |
|---|---|
| karigor new "<idea>" --run | Start a new app and build it |
| karigor starters [id] | List ready-made ideas, or read one in full |
| karigor new --starter <id> "<changes>" --run | Start from a ready-made idea, with your changes |
| karigor status <id> | Where it stands |
| karigor resume <id> | Continue after a pause, limit or crash |
| karigor setup <id> | Give settings only you can provide |
| karigor serve <id> --port <n> | Run it on this computer and keep it healthy |
| karigor feedback <id> "<text>" | Ask for a change or report a problem |
| karigor fix <id> | Start a fix round now |
| karigor grow <id> [--all] | Build the next stage, or every remaining one |
| karigor admin-link <id> <email> | A one-time link to set your admin password |
| karigor correct <id> <decisionId> "<text>" | Change a decision made for you |
| karigor reopen <id> | Bring parked work back after a stop |
| karigor dismiss <id> <workItemId> | Close a request you no longer want |
| karigor explain <id> | The story of what happened |
| karigor cost <id> | What it has used |
The full walkthrough is in Building an app with Karigor.