Skip to content

Team Ok

Write a spec.

Core trick

Runs Claude Code inside a Docker container against a markdown spec, so the generated app image contains only the app.

Tags

Description

Write a spec. Get a running app. ok serve spec.md Software engineering is moving up an abstraction layer — from code to prose. The spec becomes the source; code becomes the build artifact. ok is a CLI that turns a markdown specification into a containerized web app. Describe what you want in plain English*, and ok handles the rest: code generation runs inside Docker via Claude Code, producing a clean image with nothing but your app. *Or any written language you prefer.
abrinsmead/okcmd★ 10 forksTypeScriptCreated Feb 16, 2026 · last push Mar 8, 2026

README excerpt

# ok

Spec in, app out.

```
ok serve spec.md
```

Software engineering is moving up an abstraction layer — from code to prose. The spec becomes the source; code becomes the build artifact.

`ok` is a CLI that turns a markdown specification into a running app. Describe what you want in plain English*, and `ok` handles the rest: code generation via [Claude Code](https://docs.anthropic.com/en/docs/agents-and-tools/claude-code/overview) produces a clean app from your spec. Run it locally in Docker or in a cloud sandbox.

<sub>*Or any written language you prefer.</sub>

## Quick start

```bash
npm install -g okcmd
```

Set your API key:

```bash
echo "ANTHROPIC_API_KEY=sk-ant-..." > .env
```

Write a spec:

```markdown
# Counter App

A single-page app with a number displayed in large text and two buttons:
increment (+1) and decrement (-1). The count persists across page reloads
using localStorage.
```

Build and run:

```bash
ok serve counter.md
```

That's it. Open `http://localhost:3000`.

## How it works

```
spec.md → ok build → app artifact → ok run → accessible URL
```

`ok` supports pluggable runtimes. The default is Docker (local containers); you can also use cloud sandbox providers like Daytona.

### Docker (default)

1. **`ok build`** stages your spec into a temporary build context and runs `docker build`
2. Inside Docker, Claude Code reads your spec and generates the entire app — source files, dependencies, startup script
3. A multi-stage build produces a clean `node:l

Team