CLI

The kortix command line, its auth model, the dev loop, and every command.

The kortix command line interface (CLI) controls Kortix from a terminal — your laptop or a session sandbox. This page shows the everyday dev loop, then lists every stable command and flag.

Install

curl -fsSL https://kortix.com/install | bash

The installer downloads a prebuilt binary for macOS and Linux. Windows is not supported.

CommandEffect
kortix updateRe-run the install script and pull the latest binary.
kortix uninstall [-y|--yes] [--keep-auth] [--keep-home]Remove the binary, the /usr/local/bin shim, and the stored token. --keep-auth keeps the token. --keep-home keeps ~/.kortix.
kortix versionPrint the CLI version.

Auth model

Kortix stores authentication per host, not globally. A host is one Kortix API endpoint. Four hosts exist by default: cloud (Kortix Cloud), selfhost (your self-hosted stack), local-dev, and kortix-internal-dev. You can add more.

The config file lives at ~/.config/kortix/config.json, mode 0600. Override its path with KORTIX_CONFIG_FILE.

The CLI follows one hierarchy: host → account → project → session. You sign in to a host, pick an account inside it, pick a project inside that account, and open sessions inside the project. kortix hosts login walks the first three steps in order: it signs you in, picks the account, then sets a default project.

Every token starts with kortix_pat_. A user token, from kortix login, sees every account and project you belong to. A project token is auto-minted for a session sandbox and scoped to one project. See Token scope.

The dev loop

This loop assumes the CLI is installed and you ran kortix login. See Quickstart for setup.

Start a new project, or link an existing repo folder to one.

To scaffold a new project:

kortix init my-app
cd my-app

kortix init creates a project directory with the general-knowledge-worker template.

To link an existing cloned repo to a project you already created:

kortix projects link <project-id>

This command writes .kortix/link.json in the current directory. Kortix reads this file to find your project on every command run from this folder. If you plan to run kortix ship first, skip this step. It links a new project for you when none exists.

Ship your code

kortix ship

kortix ship lints your kortix.yaml, commits local changes, pushes your branch, and prompts for any missing secret or connector connection. Run it each time you want your local changes on the cloud project. The first run also creates the cloud project and repo if you have not linked one yet.

Run and attach to sessions

Start a session with a prompt:

kortix sessions new --prompt "Build the login page" --wait

Each session runs in its own sandbox, on its own branch. --wait blocks until the session is ready.

Attach to a session from your terminal:

kortix sessions chat

This opens an interactive chat with your most recent session. Add an id to target a specific session: kortix sessions chat <id>.

To attach your local OpenCode client to the sandbox instead, run:

kortix sessions connect

To open a raw shell in the sandbox, with no agent involved, run:

kortix sessions shell

List your running sessions at any time:

kortix sessions ls

Review with change requests

An agent opens a change request (CR) when its session has commits ready to merge. List, inspect, and merge them from the CLI.

kortix cr ls
kortix cr diff 1
kortix cr merge 1

kortix cr ls lists change requests for the linked project. kortix cr diff <cr> shows the unified patch. kortix cr merge <cr> merges it into the project's default branch. Accept a CR number or its full id.

Reference

Auth commands

CommandEffect
kortix login [--host <name>] [--api <url>] [--token <pat>] [--account <slug>] [--no-project]Sign in to the active host, or the named one. Opens a browser by default; --token signs in headless. --no-project skips the default-project pick.
kortix logout [--host <name>]Remove the token for the active host, or the named one.
kortix whoami [--host <name>] [--json] [--token-only]Print the signed-in user and active account.
kortix token [--host <name>]Shortcut for kortix whoami --token-only.

kortix hosts login / hosts logout / hosts whoami are the canonical forms. login / logout / whoami are shortcuts that act on the active host.

Hosts

CommandEffect
kortix hosts ls [--json]List every host and its auth status.
kortix hosts login [<name>] [--token <pat>] [--api <url>] [--account <slug>] [--no-project]Sign in to a host. An unknown name registers the host first.
kortix hosts logout [<name>]Remove the token for a host.
kortix hosts use <name>Switch the active host.
kortix hosts add <name> --url <url> [--dashboard-url <url>] [--login]Register a new host. --login signs in right after.
kortix hosts rm <name> [--force]Remove a host.
kortix hosts info [<name>] [--json]Show details for one host.
kortix hosts current [--json]Print the active host name.

A remote host URL that starts with http:// is normalized to https://. The CLI never sends a token over plain HTTP to a remote host. localhost is exempt.

Accounts

CommandEffect
kortix accounts ls [--json]List the accounts you belong to on the active host.
kortix accounts use [<slug-or-id>]Switch the active account.
kortix accounts current [--json]Print the active account.
kortix accounts info [<slug-or-id>] [--json]Show one account.

Projects

A command resolves "the project" in this order:

  1. The --project flag.
  2. The KORTIX_PROJECT_ID environment variable.
  3. .kortix/link.json in the exact working directory.
  4. The global default set by kortix projects use.
CommandEffect
kortix projects ls [--all] [--json]List projects on the active account. --all spans every account you belong to.
kortix projects info [<id>] [--json]Show one project. Default: the linked or default project.
kortix projects use [<id>]Set the global default project. Switches the active account if the project lives elsewhere.
kortix projects unsetClear the global default project.
kortix projects link [<id>]Bind the current directory to a project. Writes .kortix/link.json.
kortix projects unlinkRemove .kortix/link.json.
kortix projects open [<id>]Open a project's dashboard page in your browser.
kortix projects clone [<id>] [dir]Clone a project's repo through the authenticated Kortix git proxy.
kortix projects rm [<id>] [--purge] [-y|--yes]Archive a project. --purge also deletes its managed git repo.

Project scaffold

kortix init [project-name] [options] creates a new, empty project directory. It writes kortix.yaml, .kortix/Dockerfile, and the OpenCode config directory. It does not write .kortix/link.jsonkortix ship or kortix projects link create that later.

FlagMeaning
--name <project>Project name.
--primary <agent>Primary agent.
--agents <csv>Local coding-agent integrations to wire up.
--template <general-knowledge-worker|minimal>Project template. Default: general-knowledge-worker.
--forceConfigure the current directory in place instead of scaffolding a new one.
--overwriteOverwrite existing files.
--no-gitSkip git init.
-y, --yesDon't prompt.

kortix init does not include a marketplace picker. Adding a marketplace skill is an agent import: start a session and ask the agent to bring one in.

Ship

kortix ship stages, commits, and pushes your current branch to the project's git repo. Run it once to create the project. Run it again any time to sync. Alias: kortix deploy.

Each run:

  • Parses and validates kortix.yaml (skip with --no-verify).
  • Commits any dirty working tree (skip with --no-commit).
  • Prompts for any missing env secret (skip with --no-env).
  • Pushes the current branch to the same-named remote branch.
  • Connects any declared connector that still needs auth (skip with --no-connect).

An existing GitHub origin links through the Kortix GitHub App. Any other existing origin is registered as-is. No origin creates a managed Kortix git repo.

OptionEffect
--name <project>Display name for a new project.
--account <id|slug>Account to create the project under (first ship only).
--origin <managed|git-url>Override the inferred origin choice.
--github-token <pat>Link a GitHub origin with this token instead of the GitHub App.
-m, --message <text>Commit message.
--no-commit / --no-verify / --no-env / --no-connectSkip that step.
-y, --yesDon't prompt.
-n, --dry-runPrint what would happen; change nothing.
--project <id> / --host <name>Target a non-default project or host.

Sessions

Each session runs in one sandbox on its own branch.

CommandEffect
kortix sessions lsList every session on the project.
kortix sessions status [--all] [--json]Every session and what its agent is doing right now. Aliases: overview, ps.
kortix sessions info <id> [--json]Detail view: status, branch, agent, sandbox URL.
kortix sessions new [--prompt "<text>"] [--agent <name>] [--model <id>] [--wait] [--json]Start a session. --model <id> overrides the project's default model. --wait blocks until it is running (up to ~5 minutes); a timeout is a hard failure (exit 1), not a silent success. Backend-origin overrides require a backend token (PAT or service account) and 403 otherwise: --origin-ref <user-id> (attribute to your end user), --secret <id> (narrow injected secrets, repeatable), --no-secrets (inject zero project secrets), --connector <alias>=<profile-id> (bind a connector to a profile, repeatable), --context <key>=<value> (runtime context, repeatable).
kortix sessions chat [<id>] [--prompt "<text>"] [--new] [--agent <name>] [--json]Talk to a session's agent. Interactive by default. Alias: talk. Top-level kortix chat also works.
kortix sessions connect [<id>] [-- <opencode args>]Attach your local OpenCode TUI to the OpenCode server already running in the sandbox. Alias: attach.
kortix sessions shell [<id>] [--new]Open a raw interactive terminal in the sandbox, with no agent. Aliases: terminal, ssh.
kortix sessions log [<id>] [--limit <n>] [--json]Print recent messages, read-only. Aliases: messages, history.
kortix sessions pending <id> [--json]List open tool-permission or question prompts. Alias: prompts.
kortix sessions approve <id> [<req-id>] [--always] [--reject] [--message "<text>"]Answer a permission prompt.
kortix sessions answer <id> [<req-id>] [--option <v>]... [--text "<text>"] [--reject]Answer a question prompt.
kortix sessions digest [--since <7d>] [--json]Compact multi-session review. Aliases: review, summary.
kortix sessions preview <id> [port] [--port <n>] [--json]Print a clickable preview URL for a sandbox port. Default port: 3000.
kortix sessions restart <id>Restart the session's sandbox.
kortix sessions rename <id> <name>Set a session's name. Pass "" to clear it.
kortix sessions rm <id>Stop and delete a session.
kortix sessions open <id>Open a session's dashboard page in your browser.

Inside a sandbox, KORTIX_SESSION_ID is your own session's id.

Change requests

A change request (CR) merges one branch into another on any git host. It is the only way for an agent to land session work on the default branch. See Change requests.

CommandEffect
kortix cr ls [--status open|merged|closed|all] [--project <id>]List CRs. Default: --status open.
kortix cr show <cr> [--project <id>]Show one CR, including its merge preview. Alias: info.
kortix cr diff <cr> [--no-color] [--json]Print a CR's unified diff.
kortix cr open --title "<text>" [--description "<text>"] [--head <ref>] [--session <id>] [--base <ref>]Open a CR. Aliases: new, create. Inside a sandbox, --head and --session default automatically. --base defaults to the project's default branch.
kortix cr merge <cr> [--message "<text>"]Merge an open CR. Fast-forward when possible, three-way merge otherwise.
kortix cr close <cr>Close an open CR without merging.
kortix cr reopen <cr>Reopen a closed CR. Merged CRs are terminal.

<cr> accepts a per-project number (3) or the full id. Inside a sandbox, the CLI reads its token automatically — no login or link needed.

Secrets

Encrypted values stored on the project and injected as plain environment variables into every session sandbox at boot.

CommandEffect
kortix secrets lsList secrets by identifier and manifest env spec. Marks required-but-missing values.
kortix secrets set NAME=VALUE ... [--identifier <id>]Upsert one or more secrets. NAME=- reads the value from stdin.
kortix secrets request NAME ... [--scope runtime|connector] [--expires <min>]Mint a link for a human to enter a value directly — you never see the raw value.
kortix secrets unset NAME ...Remove secrets.

Env

CommandEffect
kortix env pull [--out <path>] [--force]Write a .env skeleton — names only. Values never leave the cloud.
kortix env push --from <path>Upload every NAME=VALUE from a dotenv file as a secret.

Agents

Per-agent model settings on the linked project.

CommandEffect
kortix agents models [--json]Show every agent's pinned model and the fallback default.
kortix agents model <agent> <provider/model>Pin an agent to a model.
kortix agents model <agent> --clearClear the pin — the agent follows the default again.

Channels

Manages the project's connection to a chat platform. Tokens are stored encrypted in the project's secrets and resolved server-side — they are never injected into the sandbox.

CommandEffect
kortix channels status [--json]Show the current connection.
kortix channels connect [--wait] [--timeout <sec>]Connect in one step: prints an install link. --wait polls until the install lands.
kortix channels connect --manual [--bot-token <token>] [--signing-secret <secret>]Bring-your-own-app mode: save a bot token and signing secret directly.
kortix channels disconnectRemove the project's channel secrets.
kortix channels manifestPrint the app manifest JSON for the bring-your-own-app path.

--platform slack|teams selects the platform; default slack. See Connectors.

Connectors

Connectors an agent calls as tools. add, rm, and policy set edit the local kortix.yaml; run kortix ship to apply, unless you pass --apply to change the cloud project immediately.

CommandEffect
kortix connectors ls [--json]List connectors and their status.
kortix connectors show <slug> [--json]Show one connector's tools.
kortix connectors add <slug> --provider <p> [options] [--apply]Add a connector.
kortix connectors rm <slug> [--apply]Remove a connector.
kortix connectors rename <slug> <name>Set a connector's display name.
kortix connectors syncReconcile the catalog from the shipped kortix.yaml.
kortix connectors credential <slug> [value]Set a connector's credential.
kortix connectors connect <slug>Start a one-click connect flow.
kortix connectors link <slug> [--expires <min>]Mint a shareable connect link for a human.
kortix connectors finalize <slug>Confirm a connection completed.
kortix connectors apps [<query>] [--json]Browse the connector app catalog.
kortix connectors policy ls [--json]Show project-wide execution policy.
kortix connectors policy set --default <risk|allow_all>Set the default execution mode.
kortix connectors policy <slug> ls|set <match> <allow|ask|block>|rm <match>|clearManage one connector's tool-call rules.

add options: --name <label>, --provider <pipedream\|mcp\|openapi\|postman\|graphql\|http>, --app <slug>, --url <url>, --transport <http\|sse>, --endpoint <url>, --base-url <url>, --spec <url\|path>, --auth-type <none\|bearer\|basic\|custom>, --credential shared.

Sandboxes

Manages the project's sandbox images. A template defines an image or Dockerfile plus resources; a build produces the snapshot sessions boot from.

CommandEffect
kortix sandboxes ls [--json]List templates and live provider state.
kortix sandboxes builds [--json]Recent build log.
kortix sandboxes health [--json]Primary template readiness.
kortix sandboxes add <slug> (--image <i>|--dockerfile <p>) [options]Create a custom template and start a build.
kortix sandboxes update <slug> [options]Update a template.
kortix sandboxes build <slug>Trigger a rebuild.
kortix sandboxes rebuild <slug>Force-rebuild: delete the existing snapshot first.
kortix sandboxes rm <slug>Delete a template.
kortix sandboxes fixStart a session seeded with the last failed build log, to repair it.

add/update options: --name <label>, --cpu <n>, --memory <n> (GiB), --disk <n> (GiB).

Marketplace

Read-only discovery of marketplace items. Installing an item into a project is an agent import, done from inside a session — there is no install command.

CommandEffect
kortix marketplace search [query]Search marketplace items.
kortix marketplace listList marketplace items.
kortix marketplace show <id-or-name>Show one marketplace item.

Options: --query <text>, --type <type>, --source <source>, --host <name>, --json.

Skills

CommandEffect
kortix skills listList skills available to the project. Default subcommand.
kortix skills get <name> [--full]Show one skill.
kortix skills path [name]Print a skill's file path.

Executor

The in-sandbox agent's interface to every connector. Every call is checked, resolved, and audited server-side; the CLI never holds a third-party credential. Auth: KORTIX_EXECUTOR_TOKEN. Output is JSON.

CommandEffect
kortix executor discover "<intent>"Search tools by natural-language intent.
kortix executor describe <connector>.<action>Show a tool's input schema.
kortix executor call <connector> <action> '<json-args>'Run a tool.
kortix executor add <slug> --provider pipedream --app <app>Add a connector immediately, then connect it.
kortix executor rm <slug>Remove a connector from the project.
kortix executor connect <slug>Mint a connect link for a human.
kortix executor mcpRun the optional stdio MCP compatibility server.

Files

Read-only view of the project's git repo. Operates on the default branch unless --ref names another branch, tag, or commit.

CommandEffect
kortix files ls [<path>]List files under a path.
kortix files cat <path>Print a file's contents.
kortix files search <query> [--content]Search filenames, or file contents with --content.
kortix files history <path>Commit history for one file.
kortix files branchesList branches.
kortix files commits [--path <p>]List commits on --ref.
kortix files show <sha>Show one commit and its changed files.
kortix files diff <sha> [--path <p>]Print a commit's unified patch.
kortix files compare <from> <into>Summarize the diff between two refs.

Options on every subcommand: --ref <ref>, --path <p>, --limit <n>, --json.

Triggers

A trigger starts a session from a schedule or a webhook. add, rm, enable, disable edit the local manifest — run kortix ship to apply. pause/resume flip a separate, server-side switch. See Triggers.

CommandEffect
kortix triggers ls [--json]List triggers and their runtime state.
kortix triggers add <slug> [options]Append a trigger to the manifest.
kortix triggers rm <slug>Remove a trigger.
kortix triggers info <slug> [--json]Show one trigger.
kortix triggers fire <slug>Fire a trigger manually.
kortix triggers enable <slug> / disable <slug>Turn one trigger on or off.
kortix triggers pause / resumeDeactivate or reactivate every trigger on the project, server-side.

add options: --type <cron\|webhook> (default cron), --prompt <text> (required), --agent <name>, --cron <expr>, --timezone <tz> (default UTC), --secret-env <NAME>, --name <label>, --disabled.

Access

Who can use the linked project. Roles: manager, editor, member.

CommandEffect
kortix access ls [--json]List members and their project roles.
kortix access invite <email> --role <r>Invite someone to the project.
kortix access grant <user-id> --role <r>Set a member's project role.
kortix access revoke <user-id>Remove a member's project access.
kortix access pending [--json]List pending invitations.
kortix access cancel <invite-id>Cancel a pending invitation.

Roles

Account-level custom IAM roles and policy bindings. Built-in roles are read-only references; custom roles are yours to create, edit, and bind.

CommandEffect
kortix roles ls [--json]List roles, built-in and custom.
kortix roles show <role> [--json]Show one role's permissions and usage.
kortix roles actions [--json]List the permission catalog.
kortix roles create <key> --name <n> [options]Create a custom role.
kortix roles set-actions <role> --actions a,bReplace a custom role's permissions.
kortix roles rm <role>Delete a custom role.
kortix roles assignments [--project <id>] [--json]List policy bindings.
kortix roles assign <role> --to <type>:<id>Bind a role to a member, group, or token.
kortix roles unassign <policy-id>Remove a binding.
kortix roles export [--project <id>] [--out <file>] [--format toml|json]Dump roles and bindings to a file.
kortix roles import <file>Apply a roles and bindings file.

Grants

Assigns project resources to people. Secrets and connectors live on agents; assigning an agent to a member grants everything that agent declares.

CommandEffect
kortix grants ls [--json]List grants, and which agents can be granted.
kortix grants assign <agent-name> --to <who> [--group]Assign an agent to a member, or a group with --group.
kortix grants revoke <grant-id>Remove a grant.

Manifest validation

CommandEffect
kortix validate [--file <path>] [--json] [--scopes]Validate the manifest against the canonical schema. Resolves kortix.yaml first, then kortix.toml. Exit codes: 0 valid, 1 errors, 2 file missing.
kortix schema [--version 1|2] [--url]Print the manifest's JSON Schema. --url prints the schema URL instead.

See Manifest reference.

Self-host

kortix self-host runs one Docker-based stack, identical on a laptop, a VPS, or a cloud VM. See Self-hosting and Self-hosting architecture.

CommandEffect
kortix self-host initCreate or refresh the self-host config. Does not start the stack.
kortix self-host configureInteractive wizard for integrations and update policy.
kortix self-host doctorValidate local Docker tooling and the rendered config.
kortix self-host planValidate the rendered Compose config; change nothing.
kortix self-host startCreate config if needed, then start the stack. Aliases: up, deploy.
kortix self-host update [--tag <v>|--channel stable|latest]Pull images for the configured channel or tag and recreate the stack. Alias: upgrade/reconcile.
kortix self-host rollback --release <v>Roll back to an explicit older version.
kortix self-host versionShow the running version and channel.
kortix self-host restart / stopRestart or stop the stack. Alias for stop: down.
kortix self-host status / psShow service status.
kortix self-host openOpen the dashboard in your browser.
kortix self-host connect-githubConnect a GitHub App for managed repos.
kortix self-host env ls [--show]Show persistent config values, masking secrets by default.
kortix self-host env set KEY=VALUE ...Set a value and restart only the services it affects.
kortix self-host env rotate KEY|--all-generatedRegenerate a rotatable, CLI-generated secret.
kortix self-host logs [service]Tail stack logs.
kortix self-host uninstallStop the stack and delete this instance's containers, volumes, and config.

Common flags: --instance <name> (default default), --domain <domain>, --tunnel cloudflare, --version/--tag/--release <v>, --channel stable|latest (default stable), --auto-update on|off (default on; forced off by --local-images), --update-time <HH:MM> / --update-tz <tz> (auto-updater schedule), --local-images (run locally-built images; dev mode), --enterprise-license (unlock SSO/SCIM/RBAC/audit), --admin-email <email>, --no-restrict-account-creation (let any signed-in user create new accounts/orgs; default is admin-only), --restrict-account-creation (re-enable the admin-only default), --json, --yes.

Token scope

Every token starts with kortix_pat_. A user token is scoped to every project on your accounts. A project token is scoped to one project and auto-injected into that project's sandboxes. See the full token-family reference at Session runtime.

Exit codes

CodeMeaning
0Success.
1Operation failed. Diagnostics print to stderr.
2Bad flag, unknown subcommand, or missing required argument.
CLI – Kortix Docs