Build internal agents like software. Define their skills, tools, persona, and guardrails as code, then deploy them wherever your team works.
Describe intent, an agent edits files, you review the diff. Kortix runs that same loop for support, ops, and research.
Agents are sandboxes
Every agent runs in its own disposable cloud VM, on its own git branch. Spin up thousands in parallel — nothing is shared between runs.
Work is code
Agents, skills, triggers, connectors and policies are plain files in one repo. Diff them, review them in a change request, roll them back.
You own the stack
Open and source-available. Self-host the exact same stack, bring your own runtime and model keys. No black box, no lock-in.
One repo, one config, one command. The whole path, top to bottom.
One line installs the CLI. kortix init scaffolds kortix.toml and .kortix/, wired to your coding agent.
An agent is markdown — a persona, its model, and its tools. Skills are folders it loads on demand. Edit them by hand, or describe what you want and let your coding agent write them.
---
description: Acme's support agent. Resolves tickets end to end.
mode: primary
model: anthropic/claude-opus-4-8
tools:
lookup_order: true
---
You are Acme's support agent. Resolve customer tickets
end to end, with full product and order context.
Issue refunds under $500 on your own. Anything higher
goes to a human for approval.kortix.toml holds secrets, sandbox images, triggers, connectors, and channels. Versioned from the first commit.
kortix_version = 1
[project]
name = "acme"
# the OpenCode runtime config dir
[opencode]
config_dir = ".kortix/opencode"
# a trigger runs itself, on a schedule
[[triggers]]
slug = "daily-digest"
type = "cron"
agent = "research"
cron = "0 0 9 * * 1-5"
prompt = "Summarize yesterday across Slack & Linear"
# connect a tool's API as agent tools
[[connectors]]
slug = "stripe"
provider = "http"
base_url = "https://api.stripe.com"
# answer where your team works
[[channels]]
platform = "slack"
agent = "support"kortix ship commits, pushes, builds the sandbox, and prompts for missing secrets. Triggers and channels go live immediately — no separate infra to stand up.
Every session is its own VM on its own branch, booting the runtime and your repo. Spawn thousands in parallel — zero interference. A change request is the only way work reaches main, so everything is reviewable and reversible.
Sessions run on an open runtime. Bring your own keys — Anthropic, OpenAI, local — or use Kortix compute. Nothing about the runtime is hidden.
Scaffold, ship, run, automate, connect and review — one CLI does it all. The same binary is pre-authenticated inside every sandbox, so agents drive Kortix with the exact commands you do.
$ kortix initScaffold kortix.toml + .kortix/
$ kortix shipCommit, push, link & go live
$ kortix validateType-check your manifest
$ kortix sessionsSpawn & manage sandbox sessions
$ kortix chatTalk to a session's agent
$ kortix filesBrowse the repo, diffs & branches
$ kortix triggersCron & webhook automations
$ kortix channelsConnect Slack & chat surfaces
$ kortix connectorsWire up 3,000+ tools
$ kortix secretsManage encrypted secrets
$ kortix envPull / push as dotenv
$ kortix crOpen, review & merge change requests
$ kortix accessInvite, grant & revoke access
$ kortix self-hostRun your own Kortix cloud
$ kortix hosts useSwitch cloud ↔ local
$ kortix providersBring your own model keys