← Files KoraARCHIVED FILE
skills/kora-self-host/SKILL.md
9.72 KB · Oct 5, 2026 · 18:29 UTC
--- name: kora-self-host description: "Read when installing, configuring, operating, updating, or debugging a self-managed Kora Platform deployment: the install.sh bootstrap, koractl lifecycle commands (install, configure, start, stop, status, logs, doctor, update), install modes, and license activation." --- # Kora Self-Host Operations Use this skill when the user wants to install Kora on a machine they control, or to operate an existing self-managed deployment. Using a running Kora from the terminal (signup, login, organizations, workflows) is the `kora-cli` skill, not this one. Do not use this skill for Kora SaaS. A SaaS user signs in to an existing regional Kora service and uses `kora-cli`; they do not run `install.sh`, manage Docker Compose, activate a deployment license, or use `koractl`. If the target mode is unclear, ask whether the user wants Kora SaaS or a deployment on infrastructure they control before running any command. ## Mental Model A self-managed Kora deployment is a Docker Compose bundle driven entirely by the single `./koractl` command from the install directory. Operators do not run `docker compose` directly except through the advanced escape hatch. Supported platforms: macOS with Docker Desktop or a compatible Docker/Compose setup, and Linux with Docker Engine plus the Docker Compose plugin. V1 does not support native Windows, Dockerless runtimes, or bundled native Postgres/Temporal/OpenSandbox. The installer fails with remediation text when Docker or the Compose plugin is missing. Install directory layout (bundle files plus runtime-generated files): ```text kora-platform/ koractl compose.yaml .env.example Caddyfile opensandbox.toml init-db.sql temporal/ # bundled schema and namespace setup LICENSE.md COPYRIGHT THIRD_PARTY_NOTICES.md .env # generated configuration license/ # license material and deployment token state/ # chat workspaces, workflow artifacts .rendered/ # rendered OpenSandbox config ``` Do not call Docker cleanup commands directly; `koractl` owns lifecycle details such as OpenSandbox cleanup and is the supported operator surface. `license/license-deployment-token` is a bearer secret: keep it owner-readable only and never log it, commit it, or send it to support. The signed `license.json` is entitlement material, not a bearer secret. In the kora-platform source repository, `pnpm dev:up` is the repo-development path. Never use it for self-managed installs, and never point users at this skill for repo development. ## Install The public bootstrap downloads the latest release bundle, verifies its checksum, extracts it to a temporary directory, and delegates target selection and installation to the bundled `./koractl bootstrap-install`: ```sh curl -fsSL https://kora.raw-labs.com/install.sh | bash ``` Online installs use an install session owned by Kora Accounts. Free, Pro, Teams, and account-managed Enterprise/evaluation are the common online paths, but the signed connectivity policy rather than the commercial plan label owns the deployment's Cloud dependency. Without an install-session token, the terminal prints a Kora Accounts URL; the human completes sign-in, plan selection, and checkout in the browser while the terminal polls. When Kora Accounts approves the session, the installer writes the license material and starts Kora. When driving this as a coding agent: run the command, surface the printed URL to the user, and wait — browser cancellation or expiry is reported back to the terminal instead of hanging until the polling timeout. Pick an install mode up front: - **local** — one person, one machine. Defaults to `$HOME/.kora/kora-platform` and `http://localhost:3000`, plain HTTP, first signed-up user becomes platform admin. - **server** — a VM or host reachable by a team. Defaults to `/opt/kora-platform`, HTTPS via Caddy, and requires a login allowlist. Server installs require verified SSO admin bootstrap; unverified local-auth first-user bootstrap is limited to local single-machine evaluation. - **offline** — an air-gapped deployment whose license files arrive out of band and whose signed connectivity policy does not require Kora Accounts. For non-interactive automation, pass flags to the bootstrap or set the matching environment variables: ```sh curl -fsSL https://kora.raw-labs.com/install.sh | bash -s -- --mode server --dir /opt/kora-platform ``` `--mode` answers the local/server/offline prompt; `--dir` answers the install-directory prompt. `KORA_INSTALL_MODE` and `KORA_INSTALL_DIR` are the environment equivalents. `KORA_NONINTERACTIVE=1` makes prompts use defaults or provided environment values, but a useful fully non-interactive install still needs explicit values for required server, model, access, and license configuration. For a server install without prompts, provide the mode, directory, public hostname, model settings, verified SSO admin bootstrap config, login allowlist, and either an install-session token or a plan to complete the printed browser approval. Server mode requires OIDC or `local+oidc`; local email/password first-user bootstrap is only for local single-machine evaluation. ```sh export KORA_NONINTERACTIVE=1 export KORA_PUBLIC_DOMAIN=kora.example.com export KORA_AUTH_MODE=oidc export KORA_BOOTSTRAP_ADMIN_EMAILS=admin@example.com export KORA_AUTH_ALLOWED_EMAILS=admin@example.com,@example.com export KORA_OIDC_ISSUER=https://idp.example.com export KORA_OIDC_CLIENT_ID=kora-platform export KORA_OIDC_CLIENT_SECRET="$OIDC_CLIENT_SECRET" export KORA_OIDC_REDIRECT_URI=https://kora.example.com/api/v1/auth/oidc/callback export KORA_OIDC_SCOPES=openid,email,profile export KORA_OIDC_PROVISIONING=allowlist_user export KORA_CHAT_MODEL_INPUT=anthropic/claude-opus-4-6 export KORA_CHAT_MODEL_API_KEY_INPUT="$MODEL_PROVIDER_API_KEY" # Optional: export KORA_CHAT_MODEL_BASE_URL_INPUT=https://gateway.example.com/v1 export KORA_AGENT_MODEL_INPUT=anthropic/claude-opus-4-6 export KORA_AGENT_MODEL_API_KEY_INPUT="$MODEL_PROVIDER_API_KEY" # Optional: export KORA_AGENT_MODEL_BASE_URL_INPUT=https://gateway.example.com/v1 curl -fsSL https://kora.raw-labs.com/install.sh | \ bash -s -- --mode server --dir /opt/kora-platform --install-session kora_ins_... ``` `KORA_CHAT_MODEL_INPUT` and `KORA_AGENT_MODEL_INPUT` must be supported `koractl` Pi model choices. Use `anthropic/claude-opus-4-6` unless the operator explicitly chooses another listed model. The chat model powers user-facing conversations in the Kora web UI; the agent model powers Kora agent execution work, such as coding tasks and automation. Operators can use the same model and API key for both, or split them for different cost, latency, or capability settings. `KORA_AGENT_MODEL` is the deployment fallback for capabilities that omit `agentConfig.model`; organization owners can select the workflow default and add access for other catalog models in Platform Settings > Models. The matching deployment-fallback model API keys are required before install or start can continue; get them from the selected provider's account/API-key page, such as Anthropic, OpenAI, Google, xAI, Groq, OpenRouter, Mistral, DeepSeek, Moonshot, or Z.ai. Use the optional scoped base-URL inputs only for a compatible gateway or private provider endpoint. Blank keeps the selected provider's native endpoint; never embed credentials, query strings, or fragments in the URL. Reruns into an existing install directory must state intent with `--existing-action` or `KORA_EXISTING_INSTALL_ACTION` (one of `start`, `update`, `configure`, `relink`, `reinstall`, `cancel`). Other bootstrap flags are `--install-session <token>`, `--cloud-base-url <url>`, and `--version <release>`. The version-specific `--apply-0.12-migration` flag is reserved for the documented partial-0.12 recovery in the update reference. Mode defaults, install sessions, manual bundle installs, and the required configuration checklist are in `references/install.md`. ## Verify After install or any lifecycle change: ```sh ./koractl status ./koractl doctor ``` `status` summarizes the stack as `stopped`, `starting`, `healthy`, or `unhealthy`, then prints Compose service status and the basic HTTP health result. `doctor` checks Docker, Compose, env placeholders, license files, deployment-token permissions, disk/RAM capacity, and public URL consistency, and prints remediation text instead of stack traces. A healthy local install serves the web app at `http://localhost:3000`. ## Command Table ```sh ./koractl install ./koractl configure ./koractl configure models ./koractl configure access ./koractl configure license ./koractl start [--apply-0.12-migration] ./koractl stop ./koractl restart [service] ./koractl status ./koractl logs [service] ./koractl doctor ./koractl update [version] [--terminate-running] [--apply-0.12-migration] ./koractl license status ./koractl license activate ./koractl license install-file ./koractl version ``` Advanced support can use `./koractl compose <docker-compose-args...>`, but prefer the named commands. ## Handoff To Product Use Once `./koractl status` reports healthy, account and workspace work moves to the web app at the deployment base URL or to the Kora CLI — read the `kora-cli` skill. On a local-mode install, the first user to sign up becomes platform admin. On server installs, sign in with SSO using one of the configured verified platform-admin bootstrap emails. ## Which Reference To Read Next - `references/install.md` — mode defaults, online install sessions, manual release installs, existing-install reruns, and the required configuration checklist - `references/operate.md` — start/stop/restart semantics, status, logs, doctor, model and access configuration, and advanced files - `references/update-and-license.md` — updates, forward recovery, license operations, and deployment-token hygiene
SHA-256: 651a38ca1df8ea7eaf2d2eaa6f222a32a1cb475e01024982da6633955e0eb820