diff --git a/docs/quickstart.md b/docs/quickstart.md
new file mode 100644
index 0000000..2e249cd
--- /dev/null
+++ b/docs/quickstart.md
@@ -0,0 +1,96 @@
+# DeepCode Quickstart
+
+DeepCode is a Claude-Code-parity coding agent driven by **DeepSeek**. It ships
+two ways: a **CLI** (`deepcode`) and a **macOS desktop app**. Both share the same
+`@deepcode/core` kernel, so behavior is identical.
+
+> Requirements: **Node ≥ 22** for the CLI. A **DeepSeek API key** (get one at
+> ). macOS 12+ for the desktop app.
+
+---
+
+## CLI (macOS + Linux)
+
+```bash
+# 1. Install
+npm i -g deepcode-cli
+
+# 2. Start the REPL — the first run walks you through setting your DeepSeek key
+deepcode
+```
+
+On first launch DeepCode asks for your DeepSeek API key and stores it in the
+macOS Keychain (or `~/.deepcode/credentials.json`, `chmod 600`, on Linux). You
+can also set it via environment variable:
+
+```bash
+export DEEPSEEK_API_KEY="sk-..." # X-Api-Key
+# or, for a Bearer token / CI:
+export DEEPSEEK_AUTH_TOKEN="..."
+```
+
+### Everyday use
+
+```bash
+deepcode # interactive REPL in the current repo
+deepcode -p "fix the bug in src/auth.ts" # headless one-shot, prints the result
+deepcode --mode plan # read-only "plan" mode (no writes)
+deepcode --model deepseek-reasoner --effort high # deeper reasoning
+```
+
+- **Models**: `deepseek-chat` (fast, default) · `deepseek-reasoner` (chain-of-thought).
+- **Effort**: `low | medium | high | xhigh | max` — raises the per-turn output
+ budget (DeepSeek caps output at 8192 tokens).
+- **Modes**: `default` (ask before risky tools) · `acceptEdits` · `plan` ·
+ `dontAsk` · `bypassPermissions`.
+
+### Headless / CI
+
+`-p`/`--print` runs a single prompt and exits. Combine with `--output-format json`
+for machine-readable output. Exit codes: `0` ok · `1` generic · `2` bad-input ·
+`3` api/auth · `4` max-turns · `5` aborted.
+
+```bash
+deepcode -p "summarize the architecture" --output-format json
+```
+
+For long-lived CI tokens, run `deepcode setup-token` once and store the printed
+token as `DEEPSEEK_AUTH_TOKEN` in your CI secrets.
+
+---
+
+## macOS desktop app
+
+1. Download the latest `DeepCode--arm64.dmg` from
+ [Releases](https://github.com/oratis/deepcode/releases).
+2. Open the DMG and drag **DeepCode** into Applications.
+3. Launch it. On first run it asks for your DeepSeek key, then prompts you to
+ **pick a project folder** — everything DeepCode reads, writes, or runs stays
+ inside that folder.
+4. Type a request in the composer and press ⏎. Approve tool calls inline as they
+ appear; switch model / effort / mode from the toolbar. Press **⌘\\** to expand
+ the right-hand inspector (plan · context usage · recent files · session info).
+
+The desktop app auto-updates from GitHub Releases ("Relaunch to update").
+
+---
+
+## Configure it
+
+Settings live in `~/.deepcode/settings.json` (user) and `/.deepcode/
+settings.json` (project). The desktop app's **Settings** screen edits the same
+files (GUI or raw JSON). Common knobs: `model`, `effortLevel`, `permissions`
+(allow/ask/deny matchers), `mcpServers`, `hooks`.
+
+- **Project memory**: write a `DEEPCODE.md` in your repo — DeepCode reads it as
+ durable context (supports `@import` of other files; interops with `AGENTS.md`).
+- **Permissions**: `Bash(git diff:*)` matches a subcommand; `Bash(git diff *)`
+ matches a prefix. Manage them in Settings → Permissions or in `settings.json`.
+
+---
+
+## Next steps
+
+- `docs/MIGRATION_FROM_CLAUDE_CODE.md` — what maps 1:1 from Claude Code.
+- `docs/cli-flags.md` — the full flag reference.
+- `docs/security-model.md` — sandbox, permissions, and credential storage.