
Describe an app in natural language and Micracode streams code into an in-browser workspace.
Iterate by chat or edit the code directly in a Monaco editor — everything runs on your laptop.
Your local AI coding workspace — no database, no auth, no cloud.
Star us, and you will receive all release notifications from GitHub without any delay!
🛠️ Natural-Language Codegen — Describe an app in plain English; Micracode streams a working project into the workspace file by file.
💬 Iterative Chat — Refine your project through conversation. Ask for changes, fixes, or new features and watch them stream in.
📝 In-Browser Monaco Editor — Edit generated code directly in a full Monaco editor; changes persist to disk.
🔌 Pluggable LLM Providers — Ships with Google Gemini by default; switch to OpenAI or local Ollama with one env var. Ollama models are discovered dynamically — no API key required.
📦 Local-First Storage — Projects live as plain folders on your filesystem. No database, no auth, no cloud service required.
🧪 Streaming Backend — Server-sent events deliver generated code in real time using a typed stream-event contract shared between web and API.
🗂️ Snapshots & Prompt History — Every project keeps its prompt history and snapshots so you can review or roll back.
packages/shared.nvmrc)uv)Copy the example env file into the API app and add your key:
cp .env.example apps/api/.env
$EDITOR apps/api/.env
Minimum config (Gemini, the default provider):
LLM_PROVIDER=gemini
GOOGLE_API_KEY=your_gemini_api_key
Or use OpenAI:
LLM_PROVIDER=openai
OPENAI_API_KEY=your_openai_api_key
OPENAI_MODEL=gpt-4o
Or use a local Ollama model (no API key required):
LLM_PROVIDER=ollama
OLLAMA_BASE_URL=http://localhost:11434
OLLAMA_MODEL=llama3.2
Ollama models are discovered dynamically from your local daemon — any model you have pulled (ollama pull <model>) will appear in the UI picker automatically.
See docs/configuration.md for the full reference and supported model IDs.
nvm use # picks up .nvmrc -> Node 22.18.0
bun install # JS workspaces (web + shared)
bun run api:install # Python deps for the API (creates a uv-managed venv)
Start both apps in parallel:
bun run dev
Or run them individually:
bun run dev:web # Next.js only
bun run dev:api # FastAPI only (uvicorn --reload)
Open http://localhost:3000, type a project description into the prompt box, and you're off. Full walkthrough in Getting Started.
micracode/
├── apps/
│ ├── web/ # Next.js 15 frontend
│ │ ├── src/
│ │ │ ├── app/ # App Router pages
│ │ │ ├── components/ # React components (incl. shadcn/ui)
│ │ │ ├── lib/ # Utilities and clients
│ │ │ └── store/ # Zustand stores
│ │ └── package.json
│ │
│ └── api/ # FastAPI backend
│ ├── src/micracode_api/
│ │ ├── agents/ # LLM orchestrator, prompts, model catalog
│ │ ├── routers/ # health, models, projects, generate
│ │ ├── schemas/ # Pydantic request/response models
│ │ ├── starter/ # Starter project templates
│ │ ├── config.py # Settings (env vars)
│ │ ├── storage.py # Local filesystem project storage
│ │ └── main.py # FastAPI app entry point
│ ├── tests/
│ └── pyproject.toml
│
├── packages/
│ └── shared/ # Shared TypeScript types (stream event contract)
│
├── docs/ # End-user documentation
└── README.md
All endpoints are mounted under /v1.
| Method | Endpoint | Description |
|---|---|---|
| GET | /v1/health |
Service health check |
| GET | /v1/models |
List available LLM models |
| POST | /v1/generate |
Stream code generation events (SSE) |
| GET | /v1/projects |
List all projects |
| POST | /v1/projects |
Create a new project |
| GET | /v1/projects/{id} |
Get a project by id |
| DELETE | /v1/projects/{id} |
Delete a project |
| GET | /v1/projects/{id}/files |
List/read project files |
| PUT | /v1/projects/{id}/files |
Write project files |
| GET | /v1/projects/{id}/download |
Download project as archive |
| GET | /v1/projects/{id}/prompts |
Get prompt history |
| POST | /v1/projects/{id}/prompts/pop-assistant |
Pop last assistant message |
| GET | /v1/projects/{id}/snapshots |
List project snapshots |
End-user docs live in docs/:
bun run dev # web + api in parallel
bun run dev:web # Next.js only
bun run dev:api # FastAPI only (uvicorn --reload, 127.0.0.1:8000)
bun run typecheck # TS across all workspaces
bun run lint # eslint across workspaces
bun run format # prettier
bun run test:api # pytest (storage + HTTP tests)
bun run api:lint # ruff check
bun run api:format # ruff format
This project is licensed under the MIT License.
Contributions are welcome! Feel free to open issues and pull requests.
Join our community Discord
$ claude mcp add micracode \
-- python -m otcore.mcp_server <graph>