User Guide

From downloading to running your first task takes about five minutes. After this page you should be able to drive Dolaima yourself.

1. Getting started

Download and unpack

Grab the archive for your platform from the download page. Unpacking gives you a single-file executable:

  • Windows: waycoder.exe (x64 or ARM64)
  • Linux / macOS: waycoder (x64 or ARM64)

It is a native single file — no .NET runtime required. Copy it anywhere and put it on your PATH. The macOS build is not signed or notarized, so the first launch needs a right-click → Open, or removing the file's quarantine flag.

Configure a model and your own API key

# First run: straight into the full-screen terminal UI
waycoder

Then configure a model from inside the app:

  • Press Ctrl+T to open Settings (or type /settings) and go to the Model group; or
  • Use the commands: /provider list to see providers, /model key <provider> <key> to store a key, /model to pick a model (Ctrl+M opens the model picker directly).

Dolaima does not include model credits. The key is yours, obtained from your own provider (DeepSeek, OpenAI, Qwen, Zhipu, Ollama …), and usage is billed by that provider directly — we never resell, proxy or take a cut.

The key you enter is stored on your own machine only (~/.waycoder/api_keys.json) and is never sent to us.

With a local model (Ollama / LM Studio), point the BaseUrl at the local port and use any placeholder key — local servers do not validate it. The BaseUrl does not need /v1; the app appends it for you. For a local model with a small context window, turn on economy mode (--economy on), otherwise the full prompt may exceed the model's window.

Your first conversation

waycoder
# Then just type what you need, for example:
collect every TODO under src into one list

When the yellow confirmation bar appears, press Y to allow, N to deny, A to allow everything for this session. To see the plan before anything is touched, press Shift+Tab to switch to Plan mode.

2. Five front ends + one-shot mode

Front endCommandNotes
Full-screen terminal UI (default)waycoderWhere a bare launch lands. Multi-turn chat, F1–F10 slots, sidebar, inline permission bar
Web UIwaycoder --web [port]Three-column browser UI, default port 9527; opens the browser for you
Plain CLIwaycoder --cliReads line by line → plain-text replies. Good for scripts, CI, and terminals without a full-screen mode
Desktop GUIwaycoder --gui [file]A separate desktop window (Avalonia); pass a file to open the built-in editor straight away
Watch modewaycoder --watchWatches source files for AI! comments and runs as soon as you save
# The five front ends
waycoder                          # full-screen terminal UI (default)
waycoder --web                    # web UI (port 9527 by default)
waycoder --cli                    # plain CLI
waycoder --gui                    # desktop GUI
waycoder --watch                  # watch for AI! comments

# One-shot mode: runs and exits
waycoder -p "collect every TODO under src into one list"
echo "list the directory and count lines" | waycoder   # prompt from stdin
waycoder --json -p "fix the null pointer in login"     # stdout is one structured JSON object, for IDEs / CI

# Deliver tasks to slots (F1–F10; several at once is fine)
waycoder -pa "read-only, analysis only" -p1 "analyse module A" -p2 "analyse module B"

How Watch mode works: write a comment like # AI! why does this fail? in your source, save the file, and Dolaima picks the comment up as the prompt, runs it, and writes the result back. AI? asks a question instead of changing anything.

3. Slash commands you will actually use

Type / for autocompletion and /help for the full list. Ctrl+U opens the command palette (high-frequency actions plus every slash command).

CommandWhat it does
/helpEvery command and shortcut
/modeSwitch work mode (build / plan / chat; same as Shift+Tab)
/modelModel catalogue: <id> selects the large model / small <id> the small one / list / test / import
/providerProviders: list / add / select / apikey set <provider> <key>
/connectConnection layer: switch a named connect in one step, chain on enables the fallback chain
/configConfiguration from the command line: list / get <key> / set <key> <value>
/settingsGraphical settings screen (same as Ctrl+T)
/permitPermission mode (the confirmation axis): ack / auto / smart / yolo
/permSandbox boundary (the boundary axis): off / project / network-off / hard
/editBuilt-in source editor (syntax highlighting / line numbers / find & replace / Lint summary after saving)
/diffPreview the changes file by file (/diff <keyword> filters by file name)
/sessionSessions: list / save / load / resume
/compactCompact the context manually (when a long conversation slows down)
/resetClear the conversation and start over
/tokensToken usage and cost estimate
/gitGit operations (status / log / diff); /autocommit commits automatically
/undoRoll back: edit-level (per file) or checkpoint-level (/timeline shows the timeline)
/kbSelf-learning knowledge base: mine distils git history / search / diagnose <error> / review spaced repetition
/initProject init: scans the project and writes AGENT.md (/init claude writes CLAUDE.md)
/updateCheck for updates; /update now downloads and self-replaces immediately
/mcpMCP server management (status / reconnect)
/exitExit and save the session (same as Ctrl+C)

More commands — /join (continue from a Claude/Codex/OpenCode/Crush/Aider/Gemini session), /teach (teaching mode), /doctor (self-check), /theme, /free (free models), /repro (export a reproducible script) — are listed under /help and in the FAQ.

4. Keyboard shortcuts

These are the keys of the chat screen (full-screen terminal). While a dialog is open the keyboard belongs to the dialog, with one exception: Ctrl+C — the only system key, effective at any time.

🌐 Global

KeyAction
F1–F10Switch workspace slots
EscInterrupt the current Agent (while running)
Ctrl+ZGraceful pause (stop after this batch)
Ctrl+CExit (saves the session first)
Ctrl+QEmergency exit (force-save, immediate)
Ctrl+SOpen the session list
Ctrl+LForce a full-screen redraw

✏ Editing

KeyAction
EnterSend the message
Shift+EnterNew line in the input area
Ctrl+InsertCopy the selection (Ctrl+C is taken over as exit, so copying uses this key)
Ctrl+VPaste
TabPath completion / insert 4 spaces
↑↓Input history (when the input area is not empty)
←→Move the caret in the input area
Home / EndStart / end of the input line

📋 Inline choice bar (permission confirm / plan approval / questions)

This bar expands in place below the input box; it is not a dialog.

KeyAction
↑↓ / Home / EndMove between options
EnterConfirm / next question
EscDeny / cancel
Y / N / AAllow / deny / allow all (permission confirmation)
SpaceCheck / uncheck (multi-select)
←→ / TabPage through (multi-question questionnaires)
1–9Pick item N directly (on a multi-select page it toggles that item)

🔄 Modes

KeyAction
Shift+TabCycle the work mode Build→Plan→Chat (or /mode)
Ctrl+PCycle the permission mode (Ask/Auto/SmartAuto/Yolo)
Ctrl+ECycle the economy mode (off → auto → on → extreme)
Ctrl+M / /modelOpen the model picker
Ctrl+NQuick-switch to the next connect
Ctrl+UCommand palette
Ctrl+GCycle the reasoning depth

🧭 Navigation

KeyAction
↑↓Scroll the chat (when the input area is empty)
Ctrl+↑ / Ctrl+↓Scroll the chat by 3 lines
PgUp / PgDnPage through the chat list
Ctrl+Home / Ctrl+EndJump to the top / bottom of the chat
Ctrl+TOpen settings
Ctrl+BToggle the sidebar
Ctrl+OSwap the large and small models

🖱 Mouse

ActionResult
Left clickSelect / confirm
WheelScroll lists and panels
Drag the title barMove a floating window
Drag an edgeResize a floating window

🛠 Tools

KeyAction
Ctrl+DDiff-preview the changed files
Ctrl+RGenerate a sync QR code (scan to move across devices)
Ctrl+FSearch the conversation history
Ctrl+HOpen this help panel
Ctrl+WTheme picker (use /theme next to rotate themes)
Alt+TRead the last reasoning in full (reasoning is collapsed to one line in the chat; clicking it works too)

Any key a terminal cannot be trusted with has a slash-command fallback. On Unix / macOS terminals Ctrl+M is the same code as Enter and Ctrl+H the same as Backspace, so they never arrive — use /model and /help instead. With terminal flow control (XOFF) enabled Ctrl+S freezes the terminal — use /session. On macOS F1–F10 are media keys and need Fn.

To copy, use Ctrl+Insert (Ctrl+C is exit); macOS has no Insert key, so use the terminal's native copy.

There are no three-key chords (Ctrl+Shift+letter gets stolen by the terminal on Windows), and the system copy / paste / cut keys are deliberately left alone.

5. The four axes: how the modes split up

Dolaima's modes are four independent directions, and every question has exactly one answerer:

AxisDecidesValuesHow to switch
Behavior
work mode
What work gets done and which tools exist Build (default, all tools) · Plan (read-only tools + slim prompt; the plan is approved before it runs) · Chat (0 tools, 0 prompt) Shift+Tab cycles · /mode build|plan|chat · --mode at startup
Confirmation
permission mode
When a dangerous operation interrupts you Ask (default) · Auto (asks on changes) · SmartAuto (asks on danger) · Yolo (never asks) Ctrl+P cycles · /permit ack|auto|smart|yolo · --permit / -y at startup
Boundary
sandbox
What it can touch (writable scope / network) off (default, no boundary) · project (project root only) · network-off (no network) · hard (project root + no network) /perm off|project|network-off|hard
Cost
economy mode
How many tokens get spent (prompt tier + compaction thresholds + output cap) off · auto · on (default) · extreme (minimal prompt + core tools) Ctrl+E cycles · /config economy … · --economy at startup

The decision chain in one sentence: whether a tool exists is decided by the work mode (Chat = none, Plan = read-only whitelist, Build = full or economy-trimmed); what it may touch is decided by the sandbox; whether it interrupts is decided by the permission mode; how many tokens are spent is decided by the economy mode.

Do not confuse the two look-alike pairs — this is the easiest trap:

/permit controls whether you are asked; /perm controls what may be touched. One letter apart, two different things.

--permit tiny / /permit chat switches to the Chat work mode (pure chat). --tiny means a slimmer prompt plus a small context window (with tools still fully available). Similar names, different meanings.

-y / --yolo only skips confirmations; it does not lift the sandbox boundary.

6. Where configuration and data live

Desktop: configuration and data live under ~/.waycoder/ in your home directory (on Windows, %USERPROFILE%\.waycoder\):

PathContents
~/.waycoder/config.jsonThe main configuration (the single authoritative source) — model, economy mode, sandbox, theme and every other setting
~/.waycoder/api_keys.jsonAPI keys, one per provider
~/.waycoder/connections.jsonNamed connects, providers and the model fallback chain
~/.waycoder/provider/*.jsonThe model catalogue (one file per provider)
~/.waycoder/kb/The self-learning knowledge base (/kb)
.waycoder/ in a projectPer-project data: memory/, hooks/, sessions, checkpoints

Configuration stays on your machine. None of these files are uploaded anywhere; deleting them (or the whole ~/.waycoder/ directory) wipes every local setting and key.

The only data that ever leaves your device is what you actively send in a chat — which goes directly to the model provider you configured — plus update and sync requests you explicitly trigger.

Settings can also be read and written from the command line: waycoder --config get Model, waycoder --config set Temperature 0.3; the in-app equivalent is /config.

7. Mobile quick start

Configure a key

Open the app → Settings → Model → pick a provider → paste your own API key. Once it is in, the home screen shows the configured state.

The deal is exactly the same as on the desktop: the app ships with no model credits. The key is yours from your provider, usage is billed by that provider directly, and the key is stored on-device only (in the app's private directory) — it is never sent to us.

What the five tabs do

TabWhat it is for
HomeWelcome and guidance, plus the current configuration status (which provider / model)
ChatTalk to the AI or hand it a task; streaming output, with interrupt and queueing
ShellA simulated terminal: run shell commands, and run VML programs
FilesBrowse and manage the sandboxed workspace; open a file to edit it
SettingsProviders / model / API key, editor and display options, the Full Edition, and About

The built-in editor has syntax highlighting and line numbers, and edits files in the workspace directly; compile and run from the Shell tab.

Run a sample program

The app ships with samples, sorted by language. On the Shell tab, type:

vml run examples/c/demo_std.c
# samples for other languages live under examples/<language>/, e.g. a classic game
vml run examples/c/tetris.c

The first time a VML program runs, the app extracts the bundled standard library into the workspace (about 39 MB / 5200+ files), with a progress line on screen — only the first time, or after a library update. Later launches are fast.

Free Edition vs Full Edition

The free version already gives you the editor and compiling/running C and VML assembly. The Full Edition is a one-time in-app purchase (not a subscription) that unlocks the compilers and optimizer for all 22 languages. Buy or restore it under Settings → Full Edition. After changing phones or reinstalling, use "Restore purchase" with the same account — you are not charged twice.


Still stuck? See the FAQ, or get in touch from the support page.