Koder CLI tutorial (text edition) Run koder learn in a terminal to practise in a sandbox as you read. This edition is written for Linux / Ubuntu terminal; for another system: koder learn --print --os powershell|cmd|mac|linux ━━ Lesson 1 of 30 · Welcome to Koder boot camp ━━ Coach › Hi, I'm the Koder coach. Across 30 lessons we'll take Koder from first launch to graduation, inside a throwaway practice project. · The tutorial creates a practice project in your temp folder: a small cart app with a planted bug, deleted when you finish. · Lesson 1 detects PowerShell, CMD, macOS or Linux and writes every command for it; you can switch with a number. Coach › No model setup and no cost: the one doing the work is me, the 'coach model', with a pre-written script and limited acting talent. The edits and commands are real though, through the same kernel Koder always uses. Tip · Controls: Enter = next; b = previous lesson; q = quit any time (progress is saved); a number = jump to that lesson. Tip · Copy and paste: most Linux terminals use Ctrl+Shift+C and Ctrl+Shift+V; select text and press the middle button to paste. Plain Ctrl+C means cancel. Tip · Commands hard to remember? Run koder setup (or /setup in a chat) any time and set language, model and colours with the arrow keys or the mouse. (whispering) Relax. There are no exams here, only Easter eggs. ━━ Lesson 2 of 30 · The banner and the prompt ━━ · (The banner appears here: the KARMEN refractor on the left, KODER and KARMEN LOOP on the right.) Coach › On the left is the KARMEN refractor, the mascot from our website, drawn from the very same surface; on the right, KODER and KARMEN LOOP, then the current model, engine, folder and common commands. It isn't decoration. Fine, it's mostly decoration, but it is pretty. Tip · GNOME Terminal, Konsole and Alacritty show true colour. Grey over SSH or tmux? Prefix COLORTERM=truecolor. Broken box lines? Switch to a monospaced font with block characters (DejaVu Sans Mono, say), or run KODER_ASCII=1 koder for plain characters. Coach › Below the banner is the prompt, which tells you the current state: koder › type a task here, e.g. fix the typos in README koder[code] › the brackets show the current mode koder! › the exclamation mark means auto-approve is on; be careful Coach › The prompt reads koder[plan]! ›. Which statement is right? 1. Plan mode, with auto-approve on 2. Plan mode, and something just failed 3. Code mode, and it's excited Answer: 1。Full marks. Brackets are the mode, the exclamation mark is auto-approve. ━━ Lesson 3 of 30 · Configure a model: give Koder a brain ━━ Coach › Koder can't think on its own; it needs a model. The easiest way is the settings screen: koder setup pick a provider and model with the arrow keys or mouse, paste the key; it can even open the key page Coach › Prefer commands? Put the key in an environment variable and save only its name: echo 'export OPENAI_API_KEY=sk-your-key' >> ~/.bashrc into bash's config (Ubuntu's default; ~/.zshrc for zsh); every new terminal sees it export OPENAI_API_KEY=sk-your-key this window only koder model set --preset chatgpt --key-env OPENAI_API_KEY a preset; only the variable name is saved koder model set --preset local --model qwen3:8b local Ollama, no key KODER_MODEL=… KODER_BASE_URL=… KODER_API_KEY=… koder review environment variables, handy in CI Tip · koder model presets lists the available presets; koder model show prints the current setup with only the last four characters of the key. (whispering) Careful typing keys into commands: your shell history (~/.zsh_history, ~/.bash_history) remembers better than your ex. Paste it in koder setup instead: only the last four show, and it skips shell history, but the key is stored in plaintext in local configuration. Environment-setting commands may enter history too; redact keys before sharing. Coach › Today the practice project uses the coach model, so this lesson is look-only. Set up a real one after you graduate. · You can run koder model presets right there to list them. ━━ Lesson 4 of 30 · First task: read the diff, decide ━━ Coach › cart.mjs forgets to multiply by quantity, so the test keeps failing. Let's have Koder fix it. Coach › In the default interactive mode Koder shows the diff before editing: red lines starting with - go away, green lines starting with + come in. In this lesson it writes only after y; other answers cancel. --yes auto-approves ordinary edits. (whispering) Reading a diff is like reading a check-up report: green is new muscle, red is trimmed fat. Make sure nothing vital got cut before you sign. Tip · When Koder asks 'Accept this edit?', try typing n first to enjoy changing your mind; it will propose again, and then type y. · Hands-on: type a task, the coach proposes an edit; reject once with n, accept with y, then see the file change. Coach › Practice asks at each step so you can see the controls. Normal use defaults to smart approval: low-risk commands and ordinary project edits run automatically. Sensitive prompts offer Always allow. Use /permissions execution status to inspect, ask for ask mode, or reset to revoke all settings. ━━ Lesson 5 of 30 · Command approval: run tests, stop shady ones ━━ Coach › After editing you'll want to run the tests. Running project code asks by default; low-risk checks such as node --version run automatically. Tip · Rule of thumb: allow it if you understand it, it stays inside the project and it can be undone. rm -rf, curl … | sh, git push --force: verify the source and exact effects before allowing them. Reject unknown scripts. Check official installers, licenses and verification information too. (whispering) Approve commands with the same care you give a food-delivery bill. · Hands-on: the coach asks to run node test.mjs (allow it), then a curl … | sh (reject it; even if you slip, the coach blocks it). Coach › Command output goes back to the model as is, so it sees the test results and decides what to do next. ━━ Lesson 6 of 30 · Choices: Koder asks you too ━━ Coach › When a decision is yours, Koder stops and asks a multiple-choice question. Type the number and press Enter; a bare Enter cancels the turn. (whispering) Never answer 'whatever'. 'Whatever' is the hardest dish to cook. · Hands-on: the coach asks about a service fee with three options; answer with a number, or press Enter to cancel. ━━ Lesson 7 of 30 · Slash commands: gears, brakes and undo ━━ Coach › Lines starting with / are slash commands. They control Koder itself and never reach the model. /mode plan plan mode: read-only, proposes a plan /mode code code mode: states a plan, then edits /yes toggles auto-approve; the prompt gains a ! /new starts a fresh session /lang zh switches to Chinese, /lang en switches back /review /fix /test /scan run those commands inside the chat /help /learn /exit commands, this tutorial, quit (Ctrl+D works too) Try it · Type /mode plan to switch to plan mode → /mode plan Try it · Now type /yes to turn on auto-approve → /yes Try it · Good. Type /yes again to turn it off → /yes Coach › Koder is running a command you regret. Fastest fix? 1. Press Ctrl+C to cancel the turn 2. Unplug the network cable 3. Shout 'stop' at the screen Answer: 1。Right. Ctrl+C is the emergency brake; Ctrl+D is a polite goodbye. ━━ Lesson 8 of 30 · Read-only questions, pipes and scripts ━━ Coach › Just want answers without anything being touched? Use ask. It can list, read and search, but cannot edit or run commands. · Hands-on: ask anything; the coach reads package.json with read-only tools and answers. No approvals needed, since nothing can change. Coach › In scripts, Koder behaves like any other command-line tool: git diff | koder ask "summarise this change" piped input is attached as extra material cat error.log | koder ask "what does this error mean" feed it a file koder run --yes --json "fix the lint errors" | jq -r .type --json prints one event per line for jq (sudo apt install jq) echo $? the exit code of the last command Coach › Exit codes: 0 done; 1 cancelled or a check failed; 2 a usage or model configuration problem. (whispering) Exit code 2 means 'check your setup', not 'it didn't try hard enough'. ━━ Lesson 9 of 30 · Code review with context ━━ Coach › review looks beyond the diff: it reads rule files such as AGENTS.md, recent commits and where changed functions are called, then lets the model verify with read-only tools. · Demo: the coach adds a discount function that yields fractional cents, then runs the real review pipeline, printing severity, file, line and a suggestion. Coach › Each finding has a severity (high, medium, low), file, line and suggestion. Common forms: koder review review uncommitted changes, else the current branch koder review --base main compare with main koder review --format markdown --out review.md a comment ready for the PR koder review --fail-on high exit 1 on high findings, for CI koder review --fix --check "npm test" review, fix and test in one go · You can let Koder apply the fix, again with a diff and a y. (whispering) Being caught by Koder is fine. Being caught by your users in production is not. ━━ Lesson 10 of 30 · Fix until green: fix --check ━━ Coach › fix is a loop: run the check, hand failures to Koder, re-run, until it passes or attempts run out (3 by default). Tip · This time I'll press y for you; just watch it go round by round. · Demo: a check.mjs tests a count function; Koder gets it wrong once and right the second time, showing 'attempt 1/3' and finally 'Check passed'. (whispering) It missed the first time. Don't laugh; have you ever got it right first time? koder fix --check "npm test" fix until the tests pass koder fix "the home button does nothing" no check command: fix once from the description npm test 2>&1 | koder fix feed the failure straight in ━━ Lesson 11 of 30 · Flows and CI: agents in formation ━━ Coach › Put review, tests and fixes into one flow file and run the same thing locally and in CI. Here's a small one; let's run it: · Demo: a four-step flow: tests, a check, an ask step summarising them with {{step.output}}, and a celebration that runs only when the check passed. type shell, run, ask, review, fix or test when unit.failed, count.passed, always, failure {{step.output}} reuse an earlier step's output parallel run read-only steps side by side (shell, ask, review) approve: auto auto-approve, for CI Tip · Shell steps run through sh here; on Windows the same flow goes through CMD. For a flow that runs anywhere, stick to node, npm and git, like the node -e celebration above. Coach › koder ci init writes a GitHub Actions workflow: every PR gets reviewed and commented on; comment /koder fix and it fixes and pushes back. Only repository members count; strangers can shout all they like. ━━ Lesson 12 of 30 · MoA: several models think together ━━ Coach › On hard problems one model can get stuck. MoA (Mixture of Agents) lets a few reference models advise first; the current model reads their advice privately, then acts. koder model add reference --preset custom --base-url https://your-provider.example/v1 --model YOUR_MODEL --key-env MODEL_API_KEY register reference models; as many as you like koder moa set --refs reference create a MoA preset koder --moa "refactor payments and add tests" run a task with MoA; /moa toggles it in a chat koder moa set --fanout every_step references are asked once per user turn by default; every_step asks each step, sharper and pricier Coach › Can MoA reference models edit your files directly? 1. No. They only advise; the aggregator acts, with your approval as usual 2. Yes, the more the merrier 3. Only the README Answer: 1。Right. References hold no tools at all; they can't even read a file. (whispering) MoA is like a meeting: everyone may speak, one person decides, and that person still has to ask you. ━━ Lesson 13 of 30 · Chat apps: command Koder from your phone ━━ Coach › Koder connects to Feishu, WeCom, WeChat, DingTalk, Telegram, Slack, Discord and WhatsApp. Each adapter needs the platform account and authorization. Follow setup and inspect its actual state; the WeChat flow depends on the service. Live-account acceptance remains pending for this preview; this tutorial does not connect. koder gateway setup feishu connect Feishu (wecom, dingtalk work the same way) koder gateway setup weixin configure WeChat through the available account flow koder gateway start --background receive messages in the background koder gateway status which platforms are online koder gateway pair K7Q2MX approve a new user Tip · Feishu, WeCom, DingTalk, Slack and Discord use long connections and need no public URL; the WhatsApp Cloud API needs the local port exposed through a tunnel. Tip · After koder gateway start --background the bots survive closing the terminal; for start at boot, put the command in a systemd user service or a crontab @reboot line. Coach › A stranger messages your bot on WeChat. What happens? 1. They get a pairing code; only after you run koder gateway pair can they use it 2. The bot starts editing code for them 3. The bot cheerfully sends them your keys Answer: 1。Right. Direct messages need pairing by default and groups are off; before edits or commands it still asks in the chat and waits for a 'yes'. (whispering) Now you can fix bugs from the sofa. Whether that counts as overtime is up to you. ━━ Lesson 14 of 30 · Editors: Zed, Neovim, Emacs ━━ Coach › Prefer your editor? Zed, Neovim and Emacs launch koder acp over ACP to chat, see diffs and approve edits. Zed needs just this: · (The koder editor zed snippet is shown here.) koder editor nvim Neovim (CodeCompanion), config at ~/.config/nvim/lua/plugins/codecompanion.lua koder editor emacs Emacs (agent-shell), config at ~/.emacs.d/init.el Tip · Zed's settings live in ~/.config/zed/settings.json. Too lazy to copy? The Editors item in koder setup copies it for you. (whispering) Vim users, relax: quitting Koder is far easier than quitting Vim. Ctrl+D. ━━ Lesson 15 of 30 · Scan your projects, decide what's next ━━ Coach › koder scan gathers recent projects and tasks from Koder, Codex, Claude Code and Cursor. It reads only folders, times and titles; this listing step does not request a model. Choosing a subsequent model task includes relevant project and task material in your configured model request. Coach › Once the list appears, choose like this: the number in front of a project selects it; Enter skips 1 review the changes same as koder review 2 run checks and fix guesses a check such as npm test; Enter accepts it 3 ask Koder what's most worth doing now your recent tasks from other tools are included 4 type your own task · You can run a scan on the spot; it only lists projects. (whispering) Found a dozen projects on the go? Totally normal. We're all like that. ━━ Lesson 16 of 30 · Install, update and switch engines ━━ Coach › Want Koder on another machine? Read the license and consent guide, then use your shell’s installer. Missing Node.js is downloaded and the package is checked with SHA-256. Run setup and learn afterwards. Read in your browser first: https://github.com/KarmenLoop/koder-cli/blob/main/EULA.md https://github.com/KarmenLoop/koder-cli/blob/main/ACCEPTANCE.md https://github.com/KarmenLoop/koder-cli/blob/main/LEGAL-NOTICE.md Official team: KARMENLOOP Official Team, Shanghai, China. Website: https://karmenloop.com. Email: info@karmenloop.com. A normal install asks you to type accept and press Enter. decline, an empty Enter, or Ctrl+C cancels before download. curl -fsSL https://raw.githubusercontent.com/KarmenLoop/koder-cli/main/install/koder-cli.sh | bash Unattended deployment after you have read and agreed (do not prefill this for someone else; KODER_EULA_ACCEPT=1 accepts only the software license): curl -fsSL https://raw.githubusercontent.com/KarmenLoop/koder-cli/main/install/koder-cli.sh | KODER_EULA_ACCEPT=1 bash Linux / WSL: follow runtime detection from the installer, then reopen your terminal. koder version koder setup koder learn koder update --check Check GitHub without installing koder update Verify and install a newer release; preview.6+ sessions restart and resume with config, memory and bindings retained To move to preview.7, run the normal install command above and type accept after reading. The preview.6 updater stops before downloading the installer when the license checksum changes, and KODER_EULA_ACCEPT does not bypass that check. Configuration, memory and bindings are kept koder uninstall Remove the app, keep config; choose --purge separately to delete config Tip · No sudo; everything goes in your home folder. Older systems such as Ubuntu 18.04 (glibc below 2.28) and musl systems such as Alpine get the Node.js unofficial build automatically; 32-bit Raspberry Pi (armv7l) works too. koder not found afterwards? Run source ~/.bashrc or open a new terminal. Tip · Installing on another system? koder learn 16 --os powershell (or cmd, mac, linux) shows that edition. Coach › Installed copies check for updates in the background during interactive chats, at most once every six hours. Installation waits until tasks, queued input and drafts are clear, then verifies the new entry and resumes the conversation. A changed license requires your attention first. Prefer your own timing? Use /update auto off, or /update auto on to re-enable it. Even updates can wait their turn. koder update auto status koder update auto off koder update --check koder update Coach › Koder uses its built-in native adapters. The internal fallback is disabled and gray by default; ordinary use needs no extra engine. Check the selected model and protocol first. A network error never silently changes the engine, key, or billing endpoint. koder engine list koder model show koder engine use koder (whispering) The uninstall command is here not because we want you to use it, but because we trust you won't. ━━ Lesson 17 of 30 · License and optional consent ━━ Coach › Before acceptance you can read help and this text tutorial. License acceptance enables no learning, synchronization, app connections or computer grants. Each is your choice; the tutorial enables none. koder eula koder eula accept koder help permissions koder learn --print Coach › Permissions and data guide License: personal, noncommercial local use is free; commercial use and organizational deployment require separate written authorization, and the personal license grants no proprietary development or code-modification rights. New Koder-owned distributions use proprietary Koder-EULA-1.1; third-party and legacy GPL rights remain intact. Acceptance licenses the software and enables none of the optional capabilities below. Read: koder eula. Explicitly accept: koder eula accept. Model and network: tasks, selected file contents, retrieved memories and tool results may be sent to your configured model/API. Provider charges apply. A local model must actually be installed and running; selecting a preset does not make offline inference available. Use --key-env for a variable reference. A key pasted into provider configuration is stored locally in plaintext even when the display masks it. Computer scope: file read/write/search, network, browser, desktop, channel attachments and skill updates are checked separately. Full work mode selects visible disk roots, subject to actual operating-system permissions and capabilities. Review the executable, roots and remote actors before typing GRANT. Agreement acceptance or --yes grants no computer authority. koder permissions revoke withdraws future Koder computer-tool grants on this device; revoke OS permissions in system settings separately. Completed writes or sends are not automatically undone. Cross-device memory service: your configured Core endpoint After login, this account’s default shared space can synchronize conversations and memory across linked terminals, channels and devices. All members of a linked group can use linked private-chat memory; replies posted to the group are visible to its members. Link only conversations intended for sharing. Model API keys and computer grants are not memory-sync data. Sign out here: koder account logout. Forget the shared space: koder memory forget. Sign-out does not delete server copies; offline devices apply deletion after reconnecting. Preference learning Off by default. Extract communication preferences, explicit likes and work background from authorized conversations, retain their sources, and use them in later answers. A drink wanted today should not automatically become a permanent preference; inspect, correct or remove records. Turn off: koder memory learning off Daily state Off by default. Separately allow summaries of today’s mood, temporary needs and circumstances as short-term context. This is independent of lasting preference learning and does not diagnose a condition. Turn off: koder memory daily-state off Skill evolution Off by default. Allow skill-improvement candidates from authorized tasks and feedback, retaining provenance, checks and rollback records. This does not permit self-elevation, arbitrary software installation, changes to system security or bypassing tool approvals. Turn off: koder memory evolution off Proactive service and reminders Off by default. Allow greetings, work questions and reminders based on confirmed background, and associate your reply with the original question. Default quiet hours are 22:00–08:00 local time. Current terminal reminders need a running process and a compatible Core service. This does not authorize automatic messages to contacts or groups. Turn off: koder memory proactive off Daily reflection needs authorized sources, the relevant opt-ins, a valid account and a compatible Core host. The default model-call budget is four per day, using your configured API or local model and potentially incurring charges. A waiting-host or credential state means reflection has not completed. Turning learning off stops the corresponding future use; it does not erase history. Manage records with profile forget or memory forget. Local storage: new Windows memory prefers a writable D drive, falling back to a writable per-user location on C. Existing and explicitly configured locations are retained. Memory, installation and credential locations differ; inspect memory status / memory personalization status. Manually edit or roll back the assistant style without granting authority. Normal uninstall keeps configuration; --purge separately removes configuration. External memory and server copies need separate handling. Applications and MCP use the selected service’s API key or browser authorization. That service receives data submitted through the connection and sets its own fees and terms. Chats and agents in the same configured profile can reuse a connection; external writes still require tool approval. A stdio MCP server starts a local program. Imports are disabled by default; enable or test starts a connection. Use koder apps disconnect or koder mcp disable to stop use; revoke access with the provider to invalidate its tokens. Changing choices: the four optional features do not enable one another. Type ENABLE to turn one on, DISABLE to turn it off, and SAVE for a manual style edit. Read-only help and koder learn --print are available before agreement acceptance. Native Windows, live channels and multiple physical devices remain unverified for this preview; rely on observed connection states and results. ━━ Lesson 18 of 30 · Computer and files: inspect, grant, revoke ━━ Coach › Inspect capabilities, then choose the needed folders and capabilities. Home mode is for personal files; full work mode selects visible disk roots. Review the executable, roots and remote actors before typing GRANT. OS privacy access, administrator permissions and missing drivers still need their system procedures. koder permissions status koder permissions request --home koder permissions request --mode full koder permissions revoke Tip · Grant commands change local permission records: choose one, do not paste the entire block. Revocation blocks future computer-tool calls; it does not unsend files or restore overwritten contents. Manage OS permissions in system settings separately. Coach › Use a full path, quoted when it contains spaces. On Windows, D: is drive-relative; use D:\folder\file.txt explicitly. If a path leaves its directory, check the workspace, allowed roots, network drives and link targets, then permissions status. Keep directory checks enabled. Before sending a file, confirm the recipient, group and attachment scope. ━━ Lesson 19 of 30 · Memory storage, groups and devices ━━ Coach › Memory does not put every conversation into one model request. Tasks use relevant memory and compacted history; records persist within the configured scope. New Windows profiles prefer writable D, falling back to a writable per-user location on C. Existing locations and explicit configuration are retained. Installation, credentials and memory may live in different places. koder memory status koder memory personalization status koder memory show koder memory search "project decisions" koder account status koder memory sync Coach › Cross-device memory service: your deployed, compatible Core endpoint After login, this account’s default shared space can synchronize conversations and memory across linked terminals, channels and devices. All members of a linked group can use linked private-chat memory; replies posted to the group are visible to its members. Link only conversations intended for sharing. Model API keys and computer grants are not memory-sync data. Sign out here: koder account logout. Forget the shared space: koder memory forget. Sign-out does not delete server copies; offline devices apply deletion after reconnecting. koder account login --server "https://your-core.example" Replace the example with your actual compatible Core service koder account logout Sign out here without deleting server memory koder memory forget Forget the current shared space; offline devices apply it on sync Tip · All linked-group members can use linked private-chat memory; group replies are visible to them. Link only conversations intended for that sharing. Login does not prove synchronization: inspect state and read back actual records. This preview still lacks physical multi-device and live WeChat, Feishu and WeCom account acceptance. ━━ Lesson 20 of 30 · Learning, soul, reflection and proactive service ━━ Coach › All four switches default off and remain independent. Open koder setup → Memory and soul and read each description before choosing. Command-line prompts also explain purpose and cost; type ENABLE to turn on or DISABLE to turn off. Coach › The bundled personal-agent-growth 0.3.2 method helps relevant tasks prepare, investigate failures and review results. Use koder growth status, show, off or on; changes apply to the next session. Think of it as a task notebook: it does not start a background class, enable profile learning or turn on sync. Coach › Preference learning Off by default. Extract communication preferences, explicit likes and work background from authorized conversations, retain their sources, and use them in later answers. A drink wanted today should not automatically become a permanent preference; inspect, correct or remove records. Turn off: koder memory learning off Coach › Daily state Off by default. Separately allow summaries of today’s mood, temporary needs and circumstances as short-term context. This is independent of lasting preference learning and does not diagnose a condition. Turn off: koder memory daily-state off Coach › Skill evolution Off by default. Allow skill-improvement candidates from authorized tasks and feedback, retaining provenance, checks and rollback records. This does not permit self-elevation, arbitrary software installation, changes to system security or bypassing tool approvals. Turn off: koder memory evolution off Coach › Proactive service and reminders Off by default. Allow greetings, work questions and reminders based on confirmed background, and associate your reply with the original question. Default quiet hours are 22:00–08:00 local time. Current terminal reminders need a running process and a compatible Core service. This does not authorize automatic messages to contacts or groups. Turn off: koder memory proactive off koder memory learning status koder memory daily-state status koder memory evolution status koder memory proactive status koder memory profile show koder memory soul show koder memory reflection run Tip · reflection run attempts to use authorized conversations and your configured model and may incur charges. It needs a valid account, compatible Core host and relevant opt-ins. The default is at most four model calls per day. waiting-account-host means a prerequisite is missing, not a completed summary. Proactive service needs a running host and defaults to quiet hours 22:00–08:00; closing the terminal or computer does not keep it running. Coach › Review, correct and delete learned records. A daily mood or temporary request is not a permanent identity; skill-improvement candidates still need approval. Soul settings control name, tone and style with versioned save and rollback, without adding tool authority. Disabling learning retains prior records; delete with profile forget or memory forget. ━━ Lesson 21 of 30 · Gamma, applications and MCP ━━ Coach › Applications and MCP use the selected service’s API key or browser authorization. That service receives data submitted through the connection and sets its own fees and terms. Chats and agents in the same configured profile can reuse a connection; external writes still require tool approval. A stdio MCP server starts a local program. Imports are disabled by default; enable or test starts a connection. Use koder apps disconnect or koder mcp disable to stop use; revoke access with the provider to invalidate its tokens. koder apps koder apps connect gamma --key-env GAMMA_API_KEY koder apps status koder mcp import "mcp-config.json" koder mcp list koder mcp enable my-server koder mcp test my-server koder mcp disable my-server koder apps disconnect gamma Tip · Choose individual commands as needed; do not run the entire block. Set the environment variable for your shell as shown in lesson 3. For browser authorization, follow service configuration in koder help apps / koder help mcp. Inspect the MCP executable, arguments, endpoint and permissions before enabling; test makes a real connection. Coach › Use connection diagnostics to distinguish expired tokens, rate limits, network failures and model tool-call errors. Chats and agents in the same profile reuse connections; this does not synchronize credentials across devices. Large tool results are bounded or excerpted. A connected service is not evidence of a completed external task. ━━ Lesson 22 of 30 · API, context and update troubleshooting ━━ Coach › Development tasks research public GitHub candidates and fixed-version licenses, clarify requirements and record architecture, tasks and tools. Existing projects are reused; installation retains current approvals. Say “update Koder CLI” or use /update for version comparison, verified installation and installed-entry readback; Ask/plan mode only checks. koder version koder doctor koder model show koder setup koder update --check koder update Coach › API unavailable: check endpoint, protocol, model, environment variable and network. For 401/403 check credentials or access; for 429 check quota and rate limits; for 5xx or timeout check the provider. Keep the actual error code and redact keys and conversation content before sharing logs. Coach › Use setup → Context and output. Enter the real window supported by this model and endpoint; output capacity shares it. Koder compacts history, bounds tool results and retains relevant memory, but a larger number cannot enlarge a provider hard limit. Read oversized files in chunks or retrieve relevant portions, or configure a genuinely larger-context model. Coach › update --check only checks the official GitHub feed; update downloads, verifies and installs a newer channel release. Equal versions are not reinstalled and older ones are not selected. Configuration, memory and channel bindings are retained. Sessions started with preview.6 or later restart automatically after saving work and restore the conversation and buffered input. Gateways finish work and replies before reconnecting. Start the new version once when migrating an older process. Updates never replace pending approval or replay completed actions. Review and explicitly accept any changed license before upgrading. Verify with version; old tutorial graduates resume at new lesson 17. Tip · Normal koder uninstall retains configuration. --purge removes configuration; back up first, and manage external memory and server copies separately. Tutorials and help can be read offline; remote models, updates, cloud sync and online apps require network. ━━ Lesson 23 of 30 · Keep the right door open: Alibaba and Volcano plans ━━ Coach › Read the sign on the door first: MiMo Token Plan, Kimi, DeepSeek, Alibaba Token Plan, and Volcano integrations have known bugs and are temporarily unavailable. Their entries are gray. Settings stay saved, but no requests or backup-engine switches are made. Coach › A subscription key is not an all-access pass. Alibaba Token Plan, Coding Plan, and metered APIs are separate routes. Volcano Coding Plan has its own endpoint too. Koder lists them separately and never quietly changes the billing route. koder model presets koder model models aliyun-token-plan koder model models aliyun-coding-plan koder model models volcano-coding-plan koder model models kimi-code Tip · In setup, choose the exact plan, then a model, then that plan’s key. Your console decides model access, region, and seat availability. A listing is not free credit. (whispering) The right address works better than asking a 401 to open up. ━━ Lesson 24 of 30 · MiMo checkup: a reply is only the first step ━━ Coach › MiMo Token Plan is temporarily closed for repairs; please do not keep retrying a key. The checks below apply only to available endpoints. Gray entries report that they are temporarily unavailable. Coach › MiMo metered and Token Plan credentials are separate too. Once configured, check text, then explicitly choose a tool round trip. The commands below make real requests to your API and may cost money. This lesson displays them without running them. koder model show koder model test koder model test --tools Tip · A hello in an old session should be a hello, not a restart of a task buried in hundreds of messages. Use /new for a new topic, or name the task you want to resume. A greeting does not erase saved history. ━━ Lesson 25 of 30 · Privacy paperwork, even with the Wi-Fi off ━━ Coach › Privacy should be more than a link that will not load. Full CLI terms, a plain-language statement, and the complete official consumer originals ship with the package. CLI configuration files and the desktop encrypted key store are explained separately. koder privacy consumer koder privacy statement koder privacy desktop koder privacy agreement koder privacy sources Tip · These commands read local files and need no API key. Accepting the license does not turn on learning, sync, music, IP lookup, or computer grants. ━━ Lesson 26 of 30 · A real feedback address, without the secrets ━━ Coach › Say “I want to give feedback” or “How do I contact support?” and Koder provides an email address and blank template. It does not send the email or attach chat history, keys, or private paths. koder feedback (whispering) Complaints are welcome. Reproduction steps are even better. Please keep the keys. ━━ Lesson 27 of 30 · Six seconds of fun, with an exit right there ━━ Coach › Code rain, confetti, fireworks, a Christmas tree, Halloween pumpkins, National Day lanterns, New Year, and birthdays live in one optional menu. Effects last about six seconds; any key skips. Terminals without animation support get text. Ordinary commands, JSON, and scripts stay clean. koder celebrate koder celebrate fireworks koder celebrate auto notice koder celebrate auto off Tip · By default, a supported holiday gets one greeting. Choose auto on for automatic effects. Regional and lunar holidays follow the local date; add your own annual occasion when it is not on the calendar. koder celebrate custom --date 03-14 --name "Our day" ━━ Lesson 28 of 30 · Remember a birthday, not a dossier ━━ Coach › You can explicitly ask Koder to remember your birthday, or use a month and day below. It does not ask for a birth year or age. A casual mention offers a choice; someone else’s birthday never becomes yours. The tutorial does not save the example date. koder celebrate birthday --date 03-14 koder celebrate birthday forget Tip · Birthday settings are not automatically included in model requests or sync. Information you type in an ordinary message still follows that model conversation’s normal data rules. ━━ Lesson 29 of 30 · A birthday song, and a language you choose ━━ Coach › Music and IP country lookup are off by default and confirmed separately. Enabled birthday music opens at most one automatic browser tab when you use chat that day. The local melody needs no sign-in. If autoplay is blocked, press Play. Closing the page does not affect work. koder celebrate music on koder celebrate music off koder celebrate locale --language en koder celebrate locale --language auto koder celebrate locale --ip Tip · Your chosen language comes first, then explicitly enabled local language counts. IP is only a weak hint. Country lookup exposes your public address to ipapi.co; an external music service receives its own visit data. Enter skips each choice. (whispering) A second slice of cake is fine. Permissions can stay small. ━━ Lesson 30 of 30 · Graduation ━━ Coach › Congratulations, you've graduated! A cheat sheet for the road: koder setup the settings screen, arrow keys or mouse koder start a chat koder "task" get to work koder ask "question" read-only question koder review code review koder fix --check "cmd" fix until green koder test file add tests koder flow run flow run a flow koder --moa "task" several models think together koder gateway setup platform connect a chat app koder scan scan local projects koder help command details for any command koder learn number revisit a lesson Coach › Next: set up a model with koder setup, then type koder in your own project. Tip · Go to your project: cd ~/code/my-app, then type koder. (whispering) The coach is off duty. Remember: Koder proposes, you decide, and the blame… we share. · At the end you can keep the practice project or delete it.