Editor & files
Every kodeo command
The complete reference for the kodeo CLI — all 47 commands with their options and examples, git, environment variables, exit codes and workflows.
Everything the kodeo command-line tool can do. The same reference, searchable, is at kodeo.website/local; in your terminal, kodeo help <command> shows it for one command.
Install
npm i -g @kodeohq/cliThe package is @kodeohq/cli; the command it installs is kodeo. For a one-off (CI, a server) use npx @kodeohq/cli <command>. Needs Node.js 20 or newer.
All 47 commands at a glance
Sign in & your account
kodeo login— Sign this computer in to KODEO.kodeo logout— Sign this computer out — on KODEO too.kodeo whoami— Who you’re signed in as, and what this sign-in can do.kodeo tokens— Personal access tokens for CI and scripts.kodeo signins— Your signed-in computers and tokens — sign one out.kodeo usage— Storage, runtime hours and live editors — with warnings near the limits.kodeo config— The CLI’s settings on this computer.kodeo reset— Remove this computer’s KODEO state.
Projects & folders
kodeo projects— The projects this sign-in can reach, by workspace — with who’s live.kodeo switch— Pick a project — recent first — for project commands anywhere.kodeo new— Create a project from a template, then clone or open it.kodeo clone— Download a project into a new linked folder.kodeo init— Turn this folder into a new KODEO project and upload it.kodeo link— Attach this folder to an existing project.kodeo unlink— Detach this folder.
Syncing
kodeo status— What changed here, on KODEO, or both.kodeo diff— Diffs between this folder and KODEO — side by side on a wide terminal.kodeo pull— Get KODEO’s changes, merged with yours.kodeo push— Send your changes as one all-or-nothing transaction.kodeo watch— Keep this folder and KODEO in sync while you work — with a live status line.
The room: dashboard, people, chat, comments, notifications
kodeo ui— The full-screen dashboard.kodeo who— Who’s here: client, file, typing, following, running.kodeo chat— Read and send the project’s chat.kodeo summon— Bring everyone to a file and line.kodeo comments— The project’s comment threads, by file.kodeo comment— Comment on a line — or reply, resolve, reopen, delete or show a thread, or apply its suggested change.kodeo inbox— Your notifications, by day.kodeo terminals— Teammates’ shared terminals in the project.kodeo terminal— Watch a teammate’s shared terminal, live.kodeo share— Share an app running on this computer through KODEO’s preview server.kodeo preview— The project’s live apps and who’s watching — open a teammate’s app, put one on your phone, stop yours.
KODEO Assist, Help & support
kodeo ask— Ask KODEO Assist — or, with no question, talk to it.kodeo docs— Search and read the Help Center in your terminal.kodeo support— Your support tickets.kodeo tips— A few things worth knowing.
The project’s Git & pull requests
kodeo git— The project’s Git on KODEO.kodeo pr— Pull requests on the linked GitHub repository.
The browser, editors, history & trash
kodeo open— Open the project in the browser — or in VS Code — at a file and line if you give one.kodeo code— Open VS Code (or Cursor, Windsurf, VSCodium, vscode.dev) at a file and line.kodeo checkpoint— Save, list or compare checkpoints of a file on KODEO.kodeo restore— Put a checkpoint back on KODEO, then pull it here.kodeo trash— KODEO’s 7-day trash — including files a push deleted.
Git, diagnostics & your shell
kodeo git-credential— Git’s credential helper for git.kodeo.website.kodeo doctor— Check everything, with the fix for anything wrong.kodeo auth— Hand your sign-in to KODEO for VS Code — as a new sign-in, nothing copied.kodeo completion— Tab completion for your shell.kodeo help— Help for every command, one command, or the exit codes.
Sign in & your account
Sign a computer in, see what it may do, sign it out — and manage the tokens CI uses.
kodeo login
Sign this computer in to KODEO.
kodeo login [--device | --vscode] [--read-only] [--no-git] [--no-browser]Opens KODEO in your browser; you choose what the CLI may do (read or write, Git, all or some workspaces) and approve. The sign-in is kept in your OS keychain and bound to this computer — a copy of it doesn’t work anywhere else. It also offers to set git up for git.kodeo.website.
| Option | What it does |
|---|---|
--device | Print a code to enter at kodeo.website/device instead — for SSH, containers and machines without a browser. |
--vscode | Use KODEO for VS Code’s sign-in on this computer (2.1+): VS Code asks you to confirm, and the CLI gets a new sign-in of its own — never wider than VS Code’s, never with the Git remote. |
--read-only | Ask for read-only access (clone, pull, status; no push). |
--no-git | Don’t set git up for git.kodeo.website. |
--no-browser | Print the sign-in link instead of opening a browser. |
kodeo login
kodeo login --device # on a server over SSH
kodeo login --vscode # already signed in to VS Codekodeo logout
Sign this computer out — on KODEO too.
kodeo logoutEnds the session on KODEO (it disappears from Settings → Local access) and deletes it from this computer.
kodeo logoutkodeo whoami
Who you’re signed in as, and what this sign-in can do.
kodeo whoamiShows the account, the computer, its access (read or write, which workspaces, Git) and when it expires.
kodeo whoami
kodeo whoami --json # for scriptskodeo tokens
Personal access tokens for CI and scripts.
kodeo tokens [list | create | revoke <id>]Lists your tokens (name, prefix, access, expiry, last use). create opens Settings → Local access, because tokens are made in the browser behind “Confirm it’s you” — a token can never make more tokens. revoke takes the id or the token’s prefix and stops it at once.
kodeo tokens
kodeo tokens create
kodeo tokens revoke 3f9a1c2ekodeo signins
Your signed-in computers and tokens — sign one out.
kodeo signins [revoke <id>]Every computer signed in to the CLI, VS Code or Git (with the client’s version, what it may do and when it was last active) and your personal access tokens. revoke ends one at once; with no id it asks which. Never shows an IP address or a place — Settings → Local access, behind your browser sign-in, does.
| Option | What it does |
|---|---|
--all | Include sign-ins that have ended recently. |
kodeo signins
kodeo signins revoke 4b2fkodeo usage
Storage, runtime hours and live editors — with warnings near the limits.
kodeo usage [--workspace <slug>]Per workspace: storage used of the plan’s, runtime hours used and left this period (add-ons included), projects of the plan’s allowance and how many people can edit live at once. Near a limit it says so, with the billing link.
| Option | What it does |
|---|---|
--workspace <slug> | Only this workspace. |
kodeo usage
kodeo usage --workspace acme --jsonkodeo config
The CLI’s settings on this computer.
kodeo config [<key> [<value>]]theme (auto follows your KODEO theme, or one of the 20), background (dark/light, when the terminal can’t say), popups (important/all/off), desktop (off by default; on shows titles only, full adds the text), telemetry (off by default; anonymous speed numbers), editor (what kodeo code opens), plain (screen-reader mode), motion (on/reduced) and icons (unicode/ascii/nerd). With a key and no value it asks (or shows it); with nothing it lists them all. Theme and pop-ups are shared with KODEO for VS Code on this computer; telemetry never is.
| Option | What it does |
|---|---|
--reset | Put every setting back to its default (your sign-in is untouched). |
kodeo config
kodeo config theme aurora
kodeo config desktop on
kodeo config plain on # for screen readerskodeo reset
Remove this computer’s KODEO state.
kodeo reset [--keep-folders]Ends this computer’s sign-in on KODEO and deletes it from the keychain, removes the CLI’s settings, caches and history, takes kodeo out of your global Git config, and unlinks linked folders (their .kodeo/local state — your files are never touched). Nothing on KODEO is deleted.
| Option | What it does |
|---|---|
--keep-folders | Leave linked folders linked. |
kodeo reset
kodeo reset --yes # without askingProjects & folders
Get a project into a folder, start one from a folder, or attach an existing folder.
kodeo projects
The projects this sign-in can reach, by workspace — with who’s live.
kodeo projects [--names] [--workspace <slug>]Each with your role, branch, file count, size, last change and who is live in it right now (browser, VS Code and CLI counts), or that it’s on this computer.
| Option | What it does |
|---|---|
--names | Print only workspace/project, one per line (for scripts). |
--workspace <slug> | Only this workspace. |
kodeo projects
kodeo projects --nameskodeo switch
Pick a project — recent first — for project commands anywhere.
kodeo switch [<workspace>/<project> | search]Like VS Code’s Switch Project (Alt+K): your recent projects first, then the rest, searchable. Outside a linked folder, who, chat, comments, git, pr, terminals and ui then use it; inside one, the folder’s project wins. Tells you where the project lives on this computer, if it does.
| Option | What it does |
|---|---|
--clear | Forget the switched project. |
kodeo switch
kodeo switch acme/storefrontkodeo new
Create a project from a template, then clone or open it.
kodeo new [name] [--workspace <slug>] [--template <id>] [--clone [folder]] [--open]The browser’s templates (Blank, Next.js, React + Vite, Node + Express, FastAPI, Go, Rust, HTML/CSS/JS) — their starter files written in the same transaction. Then clone it into a folder, open it in the browser or the dashboard.
| Option | What it does |
|---|---|
--workspace <slug> | Where to create it (asked when you can create in several). |
--template <id> | blank, nextjs, react-vite, node-express, python-fastapi, go, rust or static. |
--clone [folder] | Clone it straight away (into ./<project> by default). |
--open | Open it in the browser. |
kodeo new
kodeo new "Landing page" --template nextjs --clonekodeo clone
Download a project into a new linked folder.
kodeo clone <workspace>/<project> [folder]Byte-identical, binary files and empty folders included. Writes a starter .kodeoignore for your framework (build output and caches stay on your machine). Refuses a folder that isn’t empty.
kodeo clone acme/storefront
kodeo clone acme/storefront shop # into ./shopkodeo init
Turn this folder into a new KODEO project and upload it.
kodeo init [--workspace <slug>] [--name <name>] [--yes]Asks which workspace (or takes --workspace), creates the project and pushes the folder — ignore rules, secret checks and plan limits apply.
| Option | What it does |
|---|---|
--workspace <slug> | The workspace to create it in. |
--name <name> | The project’s name (default: the folder’s name). |
--allow-secrets <path> | Upload a file that looks like a secret (repeatable). |
kodeo init
kodeo init --workspace acme --name "Landing page" --yeskodeo link
Attach this folder to an existing project.
kodeo link <workspace>/<project> [--diff3]Nothing is overwritten: files on both sides that differ are merged, or marked as conflicts. Then kodeo status shows what differs and kodeo push sends your side.
| Option | What it does |
|---|---|
--diff3 | Conflict markers include the common base. |
kodeo link acme/storefrontkodeo unlink
Detach this folder.
kodeo unlinkRemoves .kodeo/local. Your files and the project on KODEO are untouched.
kodeo unlinkSyncing
See what changed, bring KODEO’s changes down, send yours up — or keep both in step automatically.
kodeo status
What changed here, on KODEO, or both.
kodeo status [--offline]Lists your changes (A added, M modified, D deleted, renames), KODEO’s changes and files changed on both sides. Only files whose size or time changed are hashed, so it’s fast on big folders.
| Option | What it does |
|---|---|
--offline | Only look at this folder (no network). |
kodeo status
kodeo status --jsonkodeo diff
Diffs between this folder and KODEO — side by side on a wide terminal.
kodeo diff [path] [--side | --unified]Coloured and numbered; side by side from 160 columns. --json gives each file’s unified patch.
| Option | What it does |
|---|---|
--side | Side by side, whatever the width. |
--unified | One column, whatever the width. |
kodeo diff
kodeo diff src/app.ts --sidekodeo pull
Get KODEO’s changes, merged with yours.
kodeo pull [--ours | --theirs] [--diff3] [--switch] [--dry-run]A file changed on both sides is merged three-way; if the same lines changed, conflict markers (<<<<<<<) are written and the file isn’t pushed until you fix it. Binary files never get markers: yours stays and KODEO’s is saved beside it as name.kodeo.ext. An interrupted pull is finished next time, never left half-applied.
| Option | What it does |
|---|---|
--ours | Resolve every conflict with your version. |
--theirs | Resolve every conflict with KODEO’s version. |
--diff3 | Conflict markers include the common base. |
--switch | Follow the project to the branch it switched to. |
--dry-run | Show what would change, change nothing. |
kodeo pull
kodeo pull --theirs
kodeo pull --dry-runkodeo push
Send your changes as one all-or-nothing transaction.
kodeo push [--dry-run] [--allow-secrets <path>] [--force]Refused as a whole if any file you’re pushing changed on KODEO since your last pull — you’re told who changed it; run kodeo pull, then push. Plan limits are checked before anything uploads, only new content travels, files open in a teammate’s editor are merged into it live, and deletes go to the 7-day trash. Files that look like secrets (.env, keys) ask first, and are refused under CI unless named with --allow-secrets.
| Option | What it does |
|---|---|
--dry-run | Show exactly what would be pushed, push nothing. |
--allow-secrets <path> | Push a file that looks like a secret (repeatable; required under CI). |
--force | Push files that still contain conflict markers, as they are. |
kodeo push --dry-run
kodeo pushkodeo watch
Keep this folder and KODEO in sync while you work — with a live status line.
kodeo watch [--diff3] [--poll <seconds>] [--keep-mine | --use-kodeo] [--no-popups]Pushes each save once the file stops changing, and pulls teammates’ edits within about a second. The status line shows ✓ synced / ↻ sending / ↓ receiving / ☁ offline, who is here and which file each has open; teammates’ changes, chat and summons appear above it, and notifications pop up (and, with kodeo config desktop on, on your desktop). Offline, your saves wait in the folder and go out version-checked when you’re back. A conflict pauses only that file — press c to compare, keep yours or use KODEO’s. Only one sync engine runs per folder: if KODEO for VS Code is syncing it, watch stands by and takes over when VS Code stops. Teammates see you as “syncing from a local folder”.
| Option | What it does |
|---|---|
--diff3 | Conflict markers include the common base. |
--poll <seconds> | How often to double-check KODEO as a backup to the live connection (default 15). |
--keep-mine | Settle a file changed on both sides with your version (no markers). |
--use-kodeo | Settle a file changed on both sides with KODEO’s version. |
--no-popups | Don’t show notifications or chat above the status line. |
kodeo watchThe room: dashboard, people, chat, comments, notifications
Be in the project with your team from the terminal — shown to everyone as “· CLI”, present but never editing.
kodeo ui
The full-screen dashboard.
kodeo ui [--project <workspace>/<project>] [--watch]One screen: the project (people with their clients, who’s typing and following whom, who’s running what, plan & usage), files with teammates’ initials on the ones they have open, activity, chat (with @mentions), comments (reply, resolve), the project’s Git (stage, commit, branches, the commit graph) and teammates’ shared terminals. Tab or 1–7 switches panes; : (or Ctrl+K) runs any kodeo command; ? shows every key; the mouse works where your terminal sends it. Side by side on wide terminals, tabs on narrow ones (t toggles; [ and ] resize, remembered). Everything updates live from the room; leaving restores your terminal exactly.
| Option | What it does |
|---|---|
--project <workspace>/<project> | Which project (default: this folder’s, or the switched one). |
--watch | Also keep this linked folder in sync while the dashboard is open. |
kodeo ui
kodeo ui --watch # in a linked folderkodeo who
Who’s here: client, file, typing, following, running.
kodeo who [--project <workspace>/<project>] [--follow]Everyone in the project now — with browser, VS Code or CLI, the file they’re in, whether they’re typing, whom they follow (and who follows them), who asked not to be followed, who is syncing a folder and who is running the project.
| Option | What it does |
|---|---|
--project <workspace>/<project> | Which project. |
--follow | Keep the list live until Ctrl+C. |
kodeo who
kodeo who --followkodeo chat
Read and send the project’s chat.
kodeo chat [message] [--follow] [--limit <n>] [--project <workspace>/<project>]With a message, sends it (@username mentions notify people; anything that looks like a secret is masked first). Without one, shows the last week’s messages — and on a terminal opens a chat box with @-completion where new messages arrive live. --follow streams new messages (as JSON lines with --json).
| Option | What it does |
|---|---|
--follow | Keep printing new messages until Ctrl+C. |
--limit <n> | How many recent messages to show (default 30). |
--project <workspace>/<project> | Which project. |
kodeo chat
kodeo chat "deploy is green @asha"
kodeo chat --follow --json # for a botkodeo summon
Bring everyone to a file and line.
kodeo summon <file[:line]> [--note <text>]People in the room get a toast with a Go button; teammates who aren’t get a notification that opens that line. Editors and above only.
| Option | What it does |
|---|---|
--note <text> | A short note with it (140 characters). |
--project <workspace>/<project> | Which project. |
kodeo summon src/app.ts:42 --note "this is the bug"kodeo comments
The project’s comment threads, by file.
kodeo comments [file] [--open | --resolved | --mine | --mentions]Open threads by default, grouped by file with the latest replies. Each has an id for kodeo comment reply|resolve|reopen|show.
| Option | What it does |
|---|---|
--open | Unresolved threads (the default). |
--resolved | Resolved threads. |
--mine | Threads you started or replied to. |
--mentions | Threads that @mention you. |
--project <workspace>/<project> | Which project. |
kodeo comments
kodeo comments src/app.ts --resolvedkodeo comment
Comment on a line — or reply, resolve, reopen, delete or show a thread, or apply its suggested change.
kodeo comment <file:line> <text> · kodeo comment reply|resolve|reopen|delete|show|apply <id> [text]The same threads as the editor and VS Code. Ids can be shortened to their first characters; with no id on a terminal you pick from a list. Mentions notify people; secret-looking text is masked before sending. apply (in the project’s linked folder) puts a suggested change into your copy of the file, pushes that one file — merged into the room if someone has it open — and marks the suggestion applied.
| Option | What it does |
|---|---|
--project <workspace>/<project> | Which project. |
kodeo comment src/app.ts:42 "should this be async?"
kodeo comment reply 7c2e "done"
kodeo comment resolve 7c2e
kodeo comment apply 7c2ekodeo inbox
Your notifications, by day.
kodeo inbox [--unread] [--follow] [--limit <n>] · kodeo inbox read|unread|open <id> · kodeo inbox read --allopen goes where the notification points: a file and line opens in your editor (kodeo code), a ticket shows here, a Help article opens here, anything else opens the browser. --follow prints new ones as they arrive over the CLI’s own live channel — and, with kodeo config desktop on, shows them on your desktop, following KODEO’s pause and quiet hours, never twice on one computer with VS Code.
| Option | What it does |
|---|---|
--unread | Only unread notifications. |
--follow | Keep printing new notifications until Ctrl+C. |
--limit <n> | How many to show (default 30, at most 50). |
--all | With read: mark everything read. |
kodeo inbox
kodeo inbox open 3fa1
kodeo inbox --followkodeo terminals
Teammates’ shared terminals in the project.
kodeo terminals [--project <workspace>/<project>]What’s shared right now — terminals, tasks, Run output and Python — with its owner, status, watchers and who has the keyboard.
| Option | What it does |
|---|---|
--project <workspace>/<project> | Which project. |
kodeo terminalskodeo terminal
Watch a teammate’s shared terminal, live.
kodeo terminal watch <id>Their screen, full screen in yours. It’s read-only until you ask: press Enter to ask for the keyboard; if they hand it over, your keys go to their terminal — checked by the collab server and again in their browser on every keystroke — until the grant lapses or they take it back. Their output is redrawn by kodeo from a terminal emulator, so nothing in it can act on your terminal. Ctrl+] leaves.
| Option | What it does |
|---|---|
--project <workspace>/<project> | Which project. |
kodeo terminal watch 9b1ckodeo share
Share an app running on this computer through KODEO’s preview server.
kodeo share <port> [--team | --link | --public | --password <pw> | --webhook [path]] [--expires 1h] [--keep] [--no-qr]Gives the app on localhost:<port> its own address on KODEO’s preview domain — the same links, access rules and viewers list as the browser editor — with a QR code and a live log of every request. It only ever talks to this computer (127.0.0.1 or ::1) on that port; no host name is resolved and no redirect followed. Viewers of a link anyone can open see a one-time notice that it isn’t a KODEO page. Ctrl+C stops sharing and ends the link (--keep leaves it, paused, until it expires). Pro and Team; a Team policy can turn it off.
| Option | What it does |
|---|---|
--team | Workspace members only (the default). |
--link | Anyone signed in to KODEO (a Team policy may limit it to some email domains). |
--public | Anyone with the link. |
--password <pw> | Anyone with the link and this password (6+ characters). |
--webhook [path] | A URL for test webhooks — POSTs from GitHub, Cashfree, Stripe… reach your app (only under the path). |
--expires <time> | How long the link lasts: 15m, 1h (default), 24h, 7d — up to your plan’s or the workspace’s longest. |
--keep | Leave the link when you stop (paused until you share again). |
--no-qr | Don’t print the QR code. |
--name <label> | A label for the link, shown in the Share menu (e.g. “API demo”). |
--project <workspace>/<project> | Which project it belongs to. |
kodeo share 3000
kodeo share 5173 --public --expires 24h
kodeo share 8080 --webhook /api/webhookskodeo preview
The project’s live apps and who’s watching — open a teammate’s app, put one on your phone, stop yours.
kodeo preview [ls] · kodeo preview open|stop|qr <id> [--path <page>]Lists the project’s live apps — one per person and port, from the browser editor, kodeo share or VS Code — with how many people are watching each right now, and your links underneath (who they open for, when they end). open opens an app in your browser already signed in (a one-time link); qr prints a QR code for your phone — for a team app it carries a one-time pass (no sign-in on the phone, two minutes, once), for an anyone/password link it’s the link itself; stop ends one you shared (workspace admins can stop anyone’s). Ids can be shortened.
| Option | What it does |
|---|---|
--path <page> | With open or qr: the page to open, e.g. /dashboard. |
--project <workspace>/<project> | Which project. |
kodeo preview
kodeo preview open 3fa1
kodeo preview qr 3fa1 --path /checkoutKODEO Assist, Help & support
Ask, read and get help without leaving the terminal.
kodeo ask
Ask KODEO Assist — or, with no question, talk to it.
kodeo ask [question] [--new] [--resume <id>] [--history] [--delete <id>]Streamed answers rendered from Markdown, with numbered sources from the Help Center, action cards to pick from, 👍/👎, and past conversations (30 days) to resume. Assist answers questions about KODEO (not your code); it’s told a few state words about the CLI — its version, whether the folder is linked and syncing, your OS family — never your code, files, paths or terminal output. The first time, it asks whether it may look at your account when a question needs it.
| Option | What it does |
|---|---|
--new | Start a new conversation. |
--resume <id> | Carry on a past conversation. |
--history | List your conversations of the last 30 days. |
--delete <id> | Forget a conversation. |
kodeo ask "why was my push refused?"
kodeo ask # a conversation
kodeo ask --historykodeo docs
Search and read the Help Center in your terminal.
kodeo docs [search…] · kodeo docs <article> · kodeo docs --category <id>Searches every article as you type with the Help Center’s own engine — nothing is sent while you type, and it works offline once the index is cached. Articles open in a pager: y/n says whether it helped, a asks Assist about it, o opens it in the browser. Works signed out.
| Option | What it does |
|---|---|
--category <id> | List one category’s articles (getting-started, account, workspaces, billing, editor, collaboration, runtime, git, troubleshooting). |
kodeo docs
kodeo docs two-factor
kodeo docs work-locally-with-the-clikodeo support
Your support tickets.
kodeo support [new | <number> [reply <text> | solve | reopen | rate <good|bad>]]The same tickets as /tickets: list them, open one (a category, a subject and what happened — kodeo attaches only its state words, never files, code or output; screenshots are added in the browser), read the conversation, reply, mark solved, reopen and rate. Staff replies show in kodeo inbox.
| Option | What it does |
|---|---|
--subject <text> | With new: the subject (otherwise asked). |
--category <id> | With new: account, billing, editor, collaboration, runtime, git, bug, feature, security or other. |
--message <text> | With new: what happened (otherwise asked). |
kodeo support
kodeo support new
kodeo support K-7QF2M reply "that fixed it, thanks"kodeo tips
A few things worth knowing.
kodeo tipskodeo tipsThe project’s Git & pull requests
KODEO’s server-side repository — the one Source Control uses in the browser and VS Code — from the terminal. Your GitHub token stays on KODEO’s server.
kodeo git
The project’s Git on KODEO.
kodeo git <status|stage|unstage|discard|commit|branch|switch|merge|stash|tag|log|blame|diff|pull|push|fetch|publish|link|unlink|clone|checks|connect> […]Per-person staging; commits with co-authors from the room, a secret scan and the branch rules said first; branches switched for everyone (changes parked and brought back); merges with conflicts you resolve in your editor or with --ours/--theirs/--both; stashes; tags; log --graph (a coloured commit graph); blame (shaded by age); diffs; GitHub — pull, push, fetch (--unshallow), publish, link, unlink, clone, CI checks — through KODEO’s GitHub App, with “connect GitHub” in your browser when it’s needed. Not the real git in a folder cloned from git.kodeo.website: kodeo git always acts on the project on KODEO.
| Option | What it does |
|---|---|
--message <text> | The commit (or stash, or tag) message (also -m). |
--all | stage/unstage/discard everything · commit everything · branch: include GitHub’s · log: every branch. |
--amend | commit: replace the last commit. |
--graph | log: draw the commit graph. |
--limit <n> | log: how many commits (default 60). |
--create <name> | branch: create it and switch everyone to it. |
--delete <name> | branch/tag: delete it. |
--rename <from> <to> | branch: rename it. |
--abort | merge: give the merge up. |
--ours | merge: settle every conflict in these files with the project’s side, then stage them. |
--theirs | merge: settle them with the merged branch’s side. |
--both | merge: keep both sides, ours first. |
--unshallow | fetch: the full history of a shallow clone. |
--private | publish: a private GitHub repository (the default). |
--public | publish: a public GitHub repository. |
--force | stage: files that look secret · push: force-push · branch --delete: unmerged. |
--staged | diff: what you’ve staged. |
--with-secrets | commit: even though the secret scan found something. |
--project <workspace>/<project> | Which project. |
kodeo git status
kodeo git stage --all && kodeo git commit -m "Fix the header"
kodeo git branch --create feature/login
kodeo git log --graph
kodeo git merge --theirs src/app.ts
kodeo git pushkodeo pr
Pull requests on the linked GitHub repository.
kodeo pr <list|view|diff|review|merge|checkout|create> [number] […]view shows the description, files, conversation, reviews and CI; diff the changes; review comments, approves or asks for changes — with comments on lines of the new code; merge merges, squashes or rebases; checkout switches the project to its branch (for everyone); create opens one from the current branch (pushing it first).
| Option | What it does |
|---|---|
--approve | review: approve it. |
--request-changes | review: ask for changes. |
--comment | review: comment without approving. |
--message <text> | review: the review’s comment (also -m). |
--line "<file>:<line> <text>" | review: a comment on a line of the new code (repeatable). |
--squash | merge: squash and merge. |
--rebase | merge: rebase and merge (a merge commit by default). |
--title <text> | create: the title (merge: the commit title). |
--body <text> | create: the description. |
--base <branch> | create: the branch to merge into (the repository’s default). |
--head <branch> | create: the branch with the changes (the current one). |
--draft | create: as a draft. |
| `--state <open\ | closed\ |
--project <workspace>/<project> | Which project. |
kodeo pr list
kodeo pr view 12
kodeo pr review 12 --approve
kodeo pr review 12 --request-changes --line "src/app.ts:40 handle the error"
kodeo pr create --title "Login page"The browser, editors, history & trash
Jump to the editor, save and restore checkpoints, and bring deleted files back.
kodeo open
Open the project in the browser — or in VS Code — at a file and line if you give one.
kodeo open [file[:line]] [--vscode | --insiders | --cursor | --windsurf | --vscodium]With --vscode (or another editor’s flag) the project opens in that editor through KODEO for VS Code: this folder if it’s linked, otherwise straight from KODEO. The extension must be installed there.
| Option | What it does |
|---|---|
--vscode | Open in VS Code (KODEO for VS Code). |
--insiders | Open in VS Code Insiders. |
--cursor | Open in Cursor. |
--windsurf | Open in Windsurf. |
--vscodium | Open in VSCodium. |
kodeo open
kodeo open src/app.ts:42
kodeo open src/app.ts:42 --vscode # the same line in VS Codekodeo code
Open VS Code (or Cursor, Windsurf, VSCodium, vscode.dev) at a file and line.
kodeo code [file[:line]] [--project <workspace>/<project>] [--insiders | --cursor | --windsurf | --vscodium | --web]Through KODEO for VS Code when it’s installed: this folder if the project is linked here, otherwise straight from KODEO, live with your team. Without the extension, a linked folder still opens with the editor’s own link. Which editor: the flag, then kodeo config editor, then KODEO’s “Open code links in”, then whatever is installed. File names are never put on a shell command line.
| Option | What it does |
|---|---|
--project <workspace>/<project> | Which project (default: this folder’s, or the switched one). |
--insiders | VS Code Insiders. |
--cursor | Cursor. |
--windsurf | Windsurf. |
--vscodium | VSCodium. |
--web | vscode.dev in the browser. |
kodeo code
kodeo code src/app.ts:42
kodeo code src/app.ts:42 --cursorkodeo checkpoint
Save, list or compare checkpoints of a file on KODEO.
kodeo checkpoint <file> [name] · kodeo checkpoint list [file] · kodeo checkpoint diff <id>The same checkpoints as the editor’s history panel. diff shows how a checkpoint differs from the file now — before you restore it. Works in any folder (the project comes from --project or kodeo switch too).
kodeo checkpoint src/app.ts "before refactor"
kodeo checkpoint list src/app.ts
kodeo checkpoint diff 8c1e22kodeo restore
Put a checkpoint back on KODEO, then pull it here.
kodeo restore <checkpoint-id>Takes the id (or its first characters) from kodeo checkpoint list.
kodeo restore 8c1e22kodeo trash
KODEO’s 7-day trash — including files a push deleted.
kodeo trash · kodeo trash restore <id>A push’s deletes are grouped, so one restore brings them all back.
kodeo trash
kodeo trash restore 51d0aaGit, diagnostics & your shell
Let git sign in through kodeo, find out what’s wrong, and get tab completion.
kodeo git-credential
Git’s credential helper for git.kodeo.website.
kodeo git-credentialkodeo login sets it up for you (for KODEO’s Git host only). Git then gets a one-hour, Git-only credential for each clone or push — nothing long-lived is stored in ~/.git-credentials. You never run it yourself.
git config --global --add credential.https://git.kodeo.website.helper "" # what login does, step 1
git config --global --add credential.https://git.kodeo.website.helper "!kodeo git-credential" # step 2kodeo doctor
Check everything, with the fix for anything wrong.
kodeo doctor [--fix]Node.js, proxy, connection and TLS, your clock, the version, the keychain, the sign-in and session, git and the git helper, KODEO for VS Code (installed, up to date, which folder it syncs), your terminal (colours, Unicode, links), desktop notifications, and where the CLI keeps its settings.
| Option | What it does |
|---|---|
--fix | Fix what can be fixed here: install or update KODEO for VS Code in your editor, repair the git helper. |
kodeo doctor
kodeo doctor --fix
kodeo doctor --jsonkodeo auth
Hand your sign-in to KODEO for VS Code — as a new sign-in, nothing copied.
kodeo auth handoff --challenge=<S256> --key=<ed25519>Used by the extension’s “Use My kodeo CLI Sign-In”: the extension makes its own key and PKCE secret and passes only their public halves; this asks KODEO for a one-minute, single-use code that only the extension can trade — for a new VS Code sign-in (its own row in Settings → Local access, never wider than this one). You don’t normally run it yourself.
| Option | What it does |
|---|---|
--challenge | The extension’s PKCE challenge (base64url SHA-256 of its secret). |
--key | The extension’s own public device key. |
kodeo auth handoff --challenge=… --key=… --json # what the extension runskodeo completion
Tab completion for your shell.
kodeo completion <bash | zsh | fish | powershell>kodeo completion powershell >> $PROFILE # PowerShell
kodeo completion bash >> ~/.bashrc # bash
kodeo completion zsh > "${fpath[1]}/_kodeo" # zsh
kodeo completion fish > ~/.config/fish/completions/kodeo.fish # fishkodeo help
Help for every command, one command, or the exit codes.
kodeo help [command] · kodeo help exit-codeskodeo help
kodeo help push
kodeo help exit-codesOptions every command takes
| Option | What it does |
|---|---|
--json | Machine-readable output with a versioned schema (kodeo.<command>/1). |
--quiet | Only errors. |
--verbose | Show every request KODEO answers — method, path, status, size and time (on stderr, never a token). |
--no-color | No colours (also NO_COLOR=1). |
--plain | Linear text for screen readers — no boxes, no cursor movement, no animation (also KODEO_PLAIN=1). |
--ascii | Plain ASCII symbols instead of Unicode (old consoles). |
--yes | Answer yes to questions (they’re never asked under CI=true). |
--server <url> | Another KODEO server (also KODEO_URL). |
--version | Print the version. |
--help | Help for the command. |
KODEO as a Git remote
Plain git, no plugin. After kodeo login has set git up, git asks kodeo for a one-hour, Git-only credential behind the scenes — nothing long-lived is stored.
git clone https://git.kodeo.website/acme/storefront # a full clone
git clone --depth 1 https://git.kodeo.website/acme/storefront # only the latest commit (fast)
git clone --filter=blob:none https://git.kodeo.website/acme/storefront # history now, file contents when needed
git push # to the project’s branch: the project’s files change for everyone
git push -u origin my-branch # another branch: it just moves
git fetch --unshallow # turn a shallow clone into a full one
git clone https://kodeo:$KODEO_TOKEN@git.kodeo.website/acme/storefront # in CI, with a token that has Git accessA push is refused, with the reason, when:
- A teammate has unsaved or uncommitted changes to a file the push changes (you’re told who).
- Rewriting the project’s branch (no force-push to the branch everyone is on).
- A secret in the new commits, a branch policy, a Viewer’s role, maintenance, or the plan’s repository size.
Environment variables
| Variable | What it does |
|---|---|
KODEO_TOKEN | A personal access token (kdop…). Used instead of kodeo login; no prompts, no keychain. Remove it from your shell to use your sign-in again. |
CI=true | Never prompt — a flag is needed instead (e.g. --yes, --allow-secrets). |
KODEO_URL | Another KODEO server (default kodeo.website). |
HTTPS_PROXY / NO_PROXY | Go through a proxy, or skip it for some hosts. |
NODE_EXTRA_CA_CERTS / KODEO_CA_FILE | Trust a company certificate (TLS inspection). |
NO_COLOR | Plain text. |
KODEO_NO_UPDATE_CHECK | Don’t mention newer versions. |
KODEO_CONFIG_DIR | Where settings and sign-ins are kept (default: your user config folder). |
KODEO_PLAIN | Plain mode, like --plain. |
KODEO_REDUCED_MOTION | No spinners or transitions. |
KODEO_BACKGROUND | dark or light — when your terminal can’t say. |
KODEO_NERD_FONT | Use Nerd Font icons (your terminal’s font must have them). |
KODEO_ASCII | ASCII symbols, like --ascii. |
KODEO_NO_DESKTOP | Never show desktop notifications on this machine. |
Exit codes
The same in every command, so scripts can rely on them (kodeo help exit-codes).
| Code | Meaning |
|---|---|
| 0 | Success |
| 1 | Something went wrong (see the message) |
| 2 | The command was used incorrectly |
| 3 | Not signed in, or the token was rejected |
| 4 | Conflicts were written into files |
| 5 | Push refused: files changed on KODEO since your last pull |
| 6 | A plan limit was reached |
| 7 | KODEO could not be reached |
| 8 | Not found, or you have no access |
| 9 | Blocked by a workspace policy |
Start to finish
First time
npm i -g @kodeohq/cli
kodeo login
kodeo projects
kodeo clone acme/storefront
cd storefrontA day’s work
kodeo pull # start from the latest
kodeo status
kodeo diff
kodeo pushHands-free
kodeo watch # leave it running; Ctrl+C to stopResolving a conflict
kodeo pull # writes <<<<<<< markers where both sides changed the same lines
kodeo status # lists the conflicted files
kodeo push # after you edit the markers outA server with no browser (SSH)
npm i -g @kodeohq/cli
kodeo login --device # approve the code on your phone at kodeo.website/device
kodeo clone acme/storefrontCI (GitHub Actions and others)
export KODEO_TOKEN=kdo_p_… # from Settings → Local access, kept in your CI’s secrets
npx @kodeohq/cli clone acme/storefront --json
cd storefront && npx @kodeohq/cli push --jsonPlain git
kodeo login # once — sets git up
git clone https://git.kodeo.website/acme/storefront
git commit -am "…" && git pushFrom the CLI to VS Code
kodeo code src/app.ts:42 # the same line in VS Code (or Cursor, Windsurf…)The dashboard
kodeo switch # pick a project (or cd into a linked folder)
kodeo ui # Tab moves between panes · : runs a command · ? shows the keysWith the team, from the terminal
kodeo who
kodeo chat --follow
kodeo comment src/app.ts:42 "why?"
kodeo inbox --follow # notifications as they arriveAlready signed in to VS Code
kodeo login --vscode # confirm in VS Code — a new CLI sign-in, nothing copiedStill have a question about this?
Assist answers from this article — in any language.
Was this helpful?