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.

36 min readUpdated 26 Oct 2026

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/cli

The 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.

OptionWhat it does
--devicePrint a code to enter at kodeo.website/device instead — for SSH, containers and machines without a browser.
--vscodeUse 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-onlyAsk for read-only access (clone, pull, status; no push).
--no-gitDon’t set git up for git.kodeo.website.
--no-browserPrint 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 Code

kodeo logout

Sign this computer out — on KODEO too.

kodeo logout

Ends the session on KODEO (it disappears from Settings → Local access) and deletes it from this computer.

kodeo logout

kodeo whoami

Who you’re signed in as, and what this sign-in can do.

kodeo whoami

Shows the account, the computer, its access (read or write, which workspaces, Git) and when it expires.

kodeo whoami
kodeo whoami --json   # for scripts

kodeo 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 3f9a1c2e

kodeo 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.

OptionWhat it does
--allInclude sign-ins that have ended recently.
kodeo signins
kodeo signins revoke 4b2f

kodeo 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.

OptionWhat it does
--workspace <slug>Only this workspace.
kodeo usage
kodeo usage --workspace acme --json

kodeo 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.

OptionWhat it does
--resetPut 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 readers

kodeo 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.

OptionWhat it does
--keep-foldersLeave linked folders linked.
kodeo reset
kodeo reset --yes   # without asking

Projects & 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.

OptionWhat it does
--namesPrint only workspace/project, one per line (for scripts).
--workspace <slug>Only this workspace.
kodeo projects
kodeo projects --names

kodeo 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.

OptionWhat it does
--clearForget the switched project.
kodeo switch
kodeo switch acme/storefront

kodeo 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.

OptionWhat 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).
--openOpen it in the browser.
kodeo new
kodeo new "Landing page" --template nextjs --clone

kodeo 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 ./shop

kodeo 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.

OptionWhat 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" --yes

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.

OptionWhat it does
--diff3Conflict markers include the common base.
kodeo link acme/storefront

Detach this folder.

kodeo unlink

Removes .kodeo/local. Your files and the project on KODEO are untouched.

kodeo unlink

Syncing

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.

OptionWhat it does
--offlineOnly look at this folder (no network).
kodeo status
kodeo status --json

kodeo 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.

OptionWhat it does
--sideSide by side, whatever the width.
--unifiedOne column, whatever the width.
kodeo diff
kodeo diff src/app.ts --side

kodeo 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.

OptionWhat it does
--oursResolve every conflict with your version.
--theirsResolve every conflict with KODEO’s version.
--diff3Conflict markers include the common base.
--switchFollow the project to the branch it switched to.
--dry-runShow what would change, change nothing.
kodeo pull
kodeo pull --theirs
kodeo pull --dry-run

kodeo 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.

OptionWhat it does
--dry-runShow exactly what would be pushed, push nothing.
--allow-secrets <path>Push a file that looks like a secret (repeatable; required under CI).
--forcePush files that still contain conflict markers, as they are.
kodeo push --dry-run
kodeo push

kodeo 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”.

OptionWhat it does
--diff3Conflict markers include the common base.
--poll <seconds>How often to double-check KODEO as a backup to the live connection (default 15).
--keep-mineSettle a file changed on both sides with your version (no markers).
--use-kodeoSettle a file changed on both sides with KODEO’s version.
--no-popupsDon’t show notifications or chat above the status line.
kodeo watch

The 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.

OptionWhat it does
--project <workspace>/<project>Which project (default: this folder’s, or the switched one).
--watchAlso keep this linked folder in sync while the dashboard is open.
kodeo ui
kodeo ui --watch   # in a linked folder

kodeo 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.

OptionWhat it does
--project <workspace>/<project>Which project.
--followKeep the list live until Ctrl+C.
kodeo who
kodeo who --follow

kodeo 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).

OptionWhat it does
--followKeep 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 bot

kodeo 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.

OptionWhat 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.

OptionWhat it does
--openUnresolved threads (the default).
--resolvedResolved threads.
--mineThreads you started or replied to.
--mentionsThreads that @mention you.
--project <workspace>/<project>Which project.
kodeo comments
kodeo comments src/app.ts --resolved

kodeo 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.

OptionWhat 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 7c2e

kodeo inbox

Your notifications, by day.

kodeo inbox [--unread] [--follow] [--limit <n>]  ·  kodeo inbox read|unread|open <id>  ·  kodeo inbox read --all

open 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.

OptionWhat it does
--unreadOnly unread notifications.
--followKeep printing new notifications until Ctrl+C.
--limit <n>How many to show (default 30, at most 50).
--allWith read: mark everything read.
kodeo inbox
kodeo inbox open 3fa1
kodeo inbox --follow

kodeo 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.

OptionWhat it does
--project <workspace>/<project>Which project.
kodeo terminals

kodeo 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.

OptionWhat it does
--project <workspace>/<project>Which project.
kodeo terminal watch 9b1c

kodeo 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.

OptionWhat it does
--teamWorkspace members only (the default).
--linkAnyone signed in to KODEO (a Team policy may limit it to some email domains).
--publicAnyone 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.
--keepLeave the link when you stop (paused until you share again).
--no-qrDon’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/webhooks

kodeo 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.

OptionWhat 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 /checkout

KODEO 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.

OptionWhat it does
--newStart a new conversation.
--resume <id>Carry on a past conversation.
--historyList 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 --history

kodeo 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.

OptionWhat 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-cli

kodeo 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.

OptionWhat 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 tips
kodeo tips

The 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.

OptionWhat it does
--message <text>The commit (or stash, or tag) message (also -m).
--allstage/unstage/discard everything · commit everything · branch: include GitHub’s · log: every branch.
--amendcommit: replace the last commit.
--graphlog: 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.
--abortmerge: give the merge up.
--oursmerge: settle every conflict in these files with the project’s side, then stage them.
--theirsmerge: settle them with the merged branch’s side.
--bothmerge: keep both sides, ours first.
--unshallowfetch: the full history of a shallow clone.
--privatepublish: a private GitHub repository (the default).
--publicpublish: a public GitHub repository.
--forcestage: files that look secret · push: force-push · branch --delete: unmerged.
--stageddiff: what you’ve staged.
--with-secretscommit: 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 push

kodeo 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).

OptionWhat it does
--approvereview: approve it.
--request-changesreview: ask for changes.
--commentreview: 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).
--squashmerge: squash and merge.
--rebasemerge: 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).
--draftcreate: 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.

OptionWhat it does
--vscodeOpen in VS Code (KODEO for VS Code).
--insidersOpen in VS Code Insiders.
--cursorOpen in Cursor.
--windsurfOpen in Windsurf.
--vscodiumOpen in VSCodium.
kodeo open
kodeo open src/app.ts:42
kodeo open src/app.ts:42 --vscode   # the same line in VS Code

kodeo 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.

OptionWhat it does
--project <workspace>/<project>Which project (default: this folder’s, or the switched one).
--insidersVS Code Insiders.
--cursorCursor.
--windsurfWindsurf.
--vscodiumVSCodium.
--webvscode.dev in the browser.
kodeo code
kodeo code src/app.ts:42
kodeo code src/app.ts:42 --cursor

kodeo 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 8c1e22

kodeo 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 8c1e22

kodeo 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 51d0aa

Git, 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-credential

kodeo 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 2

kodeo 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.

OptionWhat it does
--fixFix 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 --json

kodeo 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.

OptionWhat it does
--challengeThe extension’s PKCE challenge (base64url SHA-256 of its secret).
--keyThe extension’s own public device key.
kodeo auth handoff --challenge=… --key=… --json   # what the extension runs

kodeo 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   # fish

kodeo help

Help for every command, one command, or the exit codes.

kodeo help [command]  ·  kodeo help exit-codes
kodeo help
kodeo help push
kodeo help exit-codes

Options every command takes

OptionWhat it does
--jsonMachine-readable output with a versioned schema (kodeo.<command>/1).
--quietOnly errors.
--verboseShow every request KODEO answers — method, path, status, size and time (on stderr, never a token).
--no-colorNo colours (also NO_COLOR=1).
--plainLinear text for screen readers — no boxes, no cursor movement, no animation (also KODEO_PLAIN=1).
--asciiPlain ASCII symbols instead of Unicode (old consoles).
--yesAnswer yes to questions (they’re never asked under CI=true).
--server <url>Another KODEO server (also KODEO_URL).
--versionPrint the version.
--helpHelp 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 access

A 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

VariableWhat it does
KODEO_TOKENA 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=trueNever prompt — a flag is needed instead (e.g. --yes, --allow-secrets).
KODEO_URLAnother KODEO server (default kodeo.website).
HTTPS_PROXY / NO_PROXYGo through a proxy, or skip it for some hosts.
NODE_EXTRA_CA_CERTS / KODEO_CA_FILETrust a company certificate (TLS inspection).
NO_COLORPlain text.
KODEO_NO_UPDATE_CHECKDon’t mention newer versions.
KODEO_CONFIG_DIRWhere settings and sign-ins are kept (default: your user config folder).
KODEO_PLAINPlain mode, like --plain.
KODEO_REDUCED_MOTIONNo spinners or transitions.
KODEO_BACKGROUNDdark or light — when your terminal can’t say.
KODEO_NERD_FONTUse Nerd Font icons (your terminal’s font must have them).
KODEO_ASCIIASCII symbols, like --ascii.
KODEO_NO_DESKTOPNever show desktop notifications on this machine.

Exit codes

The same in every command, so scripts can rely on them (kodeo help exit-codes).

CodeMeaning
0Success
1Something went wrong (see the message)
2The command was used incorrectly
3Not signed in, or the token was rejected
4Conflicts were written into files
5Push refused: files changed on KODEO since your last pull
6A plan limit was reached
7KODEO could not be reached
8Not found, or you have no access
9Blocked by a workspace policy

Start to finish

First time

npm i -g @kodeohq/cli
kodeo login
kodeo projects
kodeo clone acme/storefront
cd storefront

A day’s work

kodeo pull   # start from the latest
kodeo status
kodeo diff
kodeo push

Hands-free

kodeo watch   # leave it running; Ctrl+C to stop

Resolving 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 out

A 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/storefront

CI (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 --json

Plain git

kodeo login   # once — sets git up
git clone https://git.kodeo.website/acme/storefront
git commit -am "…" && git push

From 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 keys

With the team, from the terminal

kodeo who
kodeo chat --follow
kodeo comment src/app.ts:42 "why?"
kodeo inbox --follow   # notifications as they arrive

Already signed in to VS Code

kodeo login --vscode   # confirm in VS Code — a new CLI sign-in, nothing copied

Still have a question about this?

Assist answers from this article — in any language.

More in Editor & files