Skip to content
OpenWork Alternative

Self-host the open-source Kortix AI Operating System

Self-hosting Kortix, the open-source AI Operating System, puts the whole platform on hardware you control. A single Docker Compose stack runs the frontend, the API, the LLM gateway and the Supabase distribution, and agent sessions run on a separate sandbox provider. One command installs it on a Linux box.

Install

Two ways to install it

One command on a bare Linux box, or the CLI on any host you configure yourself.

Exhibitterminal
curl -fsSL https://github.com/kortix-ai/suna/raw/dev/scripts/kortix-selfhost-up.sh \  | bash -s -- --domain kortix.example.com --email ops@example.com
Exhibitterminal
curl -fsSL https://kortix.com/install | bashkortix self-host init --domain kortix.example.comkortix self-host start

What a self-hosted Kortix instance installs

A self-hosted Kortix instance is one Docker Compose stack. The frontend, the kortix-api image, the LLM gateway and the Supabase Docker distribution all run on the box you choose. When you set a domain, Kortix also renders Caddy for TLS and a small updater that keeps the images current. The same Compose file runs on a laptop, a VPS or a server in your own cloud account. A domain is only the value of KORTIX_DOMAIN; it is not a different setup. Kortix documents how the pieces fit together.

Three things land on disk and stay yours. The company itself is one git repo: kortix.yaml declares the agents and what each may touch, each agent is a markdown file at agents/<name>.md, each skill lives at skills/<name>/SKILL.md, and project memory accumulates under memory/. Grep it, diff a change, roll one back. The instance data sits under ~/.config/kortix/self-host/<instance>/: the Postgres database in volumes/db/data and file storage in volumes/storage. The instance .env holds every secret and signing key the stack uses.

Connector credentials are brokered server-side and never enter the machine. Secrets are encrypted at rest with a key per project. One isolated sandbox per session, and session work reaches main through a change request.

What the first run asks for

The first run asks for a few values and no model key. You point the install at a domain, or use a Cloudflare tunnel for evaluation, and later run kortix self-host configure to enter a sandbox provider key. Models are BYOK in the app, so you connect your own provider key in the model picker once the stack is up. GitHub connects in the dashboard under Settings → Git. The stack has no Redis and no separate worker.

Plan for memory as well. Each API service defaults to a 640 MiB limit, and that default suits an 8 GiB host. On a 16 GiB host with API traffic pressing the limit, raise it:

Exhibittext
kortix self-host env set KORTIX_API_MEMORY_LIMIT=1024m

Install and start the stack

On a bare Linux box, the one-shot bootstrap installs Docker, installs the kortix CLI and starts the whole stack:

Exhibittext
curl -fsSL https://github.com/kortix-ai/suna/raw/dev/scripts/kortix-selfhost-up.sh \  | bash -s -- --domain kortix.example.com --email ops@example.com

Create the DNS records for your domain and for api.<domain> before you run it, and open ports 80 and 443. On macOS, or on any host you would rather configure by hand, install the CLI and run the manual path:

Exhibittext
curl -fsSL https://kortix.com/install | bashkortix self-host init --domain kortix.example.comkortix self-host startkortix self-host status

kortix self-host init renders the Compose config and the .env, and kortix self-host start brings the stack up. kortix self-host doctor validates the Docker tooling and the rendered config. To evaluate without a domain, use kortix self-host init --tunnel cloudflare; the tunnel URL changes on every restart, so run production on a real domain.

What it needs, and what it does not

A self-hosted Kortix instance needs outbound network access; it is not an offline install. It pulls its images from docker.io/kortix/*, and agent sessions never run on the box. They run on a separate sandbox provider that kortix-api reaches over egress, with Daytona as the default and Platinum and E2B also supported. The sandbox provider key is the one credential the stack cannot start without. A domain or a tunnel gives the sandbox a stable URL to call back to, so without one, sessions cannot run.

How it compares with OpenWork

Kortix self-hosts as the whole platform: the frontend, the API, the LLM gateway and the Supabase distribution in one Docker Compose project, with Caddy issuing TLS and a daily updater built in. The agents, the memory, the connectors and the triggers live in the git repo you own, and agent sessions run off the box on a separate sandbox provider rather than on the machine running the stack.

OpenWork is a desktop app for macOS, Windows and Linux where agents work on your own files, and its control plane can be self-hosted too. OpenWork's self-hosting docs present Docker Compose as an evaluation path and point production at a published Helm chart on managed Kubernetes, with MySQL for control-plane state and a separate worker runtime, leaving TLS, secret management, backups and cloud sandboxes to your own infrastructure. Both run on hardware you choose; the difference is what each one treats as the unit you own.

FAQ

Self-hosting questions

  1. Is self-hosting Kortix free?

    Self-host is free. You pay only for the compute you point it at and the model keys you bring, and a self-hosted instance uses your own provider key by default.

  2. What do I need to back up?

    Copy two directories and one file under ~/.config/kortix/self-host/<instance>/: the Postgres directory volumes/db/data, the storage directory volumes/storage, and the instance .env. A restore needs all three, so copy them before any destructive command.

  3. Can I pin a version instead of updating automatically?

    Yes. Every instance updates itself once a day by default. Pin an exact version with kortix self-host update --tag <version> --auto-update off, and roll back with kortix self-host rollback --release <version>.

  4. Which operating systems can run a self-hosted instance?

    The one-shot bootstrap runs on Linux only. On macOS, install the CLI and use the manual path; the CLI ships a prebuilt binary for macOS and Linux.

  5. Which models can a self-hosted instance use?

    Any model provider with your own keys, or the ChatGPT plan you already pay for. A self-hosted instance uses your own key by default; connect it in the model picker after the stack starts.

Run your own Kortix instance.

Self-host is free, and the code is open source. Start on a Linux box, a VPS or your own network.

Open source · Any model, your keys · Self-host, VPC, or on-prem