Skip to content

Getting started

Scooter deploys as a set of Kubernetes manifests rendered by kubenix from one typed configuration module. You describe the platform in Nix; everything else — images, Deployments, the option reference in these docs — derives from that.

Prerequisites

  • A Kubernetes cluster (k3s, kind, EKS, …) with the agent-sandbox controller installed
  • Nix with flakes enabled
  • An ingress controller if you want the UI reachable from a browser

Minimal configuration

# platform.nix
{
  agentSandbox = {
    namespace = "agent-sandbox";

    # The chat UI + API, behind your ingress (auth is YOUR ingress's job — Scooter
    # trusts the identity header it sets).
    ui.enable = true;
    ingress = {
      enable = true;
      host = "chat.example.com";
      className = "nginx";
    };

    # The model catalog. See the option reference for the provider-first layout.
    agent.availableModels = {
      goose."us.anthropic.claude-sonnet-4-6" = { default = true; };
    };

    # Bring-your-own-Claude: one option enables the controller, its ingress path,
    # and the Settings UI.
    byoc.enable = true;
  };
}

Render and apply:

nix build .#platform-manifests   # or wire mkPlatform into your own flake
kubectl apply -f result

The full set of options — every agentSandbox.* knob with types, defaults, and examples — is in the configuration reference, generated directly from the modules so it cannot drift from the code.

Example configuration

examples/kubenix-config.nix is the maintained kitchen-sink example — every feature enabled, with comments. It doubles as the render-check fixture in CI, so it always evaluates.