INSTALL · DATASHEET

Four things, then
you're running.

An image, a database, an auth token, and a config file. No control plane, no account, no build step.

A Postgres database

Any Postgres 16+. Point neutron at it with DATABASE_URL; migrations run on boot.

An auth token

A Claude Agent SDK OAuth token (or API key) in CLAUDE_CODE_OAUTH_TOKEN. That is the model access.

An instance.yaml

Name, brand, admins, and whatever seams you want on — theme, capabilities, channels, tools, workspace, safety.

Run the image

The container serves the API and the built UI on one port. Front it with your own TLS / ingress.

01

Plain container

The shortest path — Docker or Podman.

# minimal instance.yaml
name: acme
theme: { brand: "Acme Agent" }
admins: ["you@acme.example"]
safety: { read_only: true }

# run it
docker run -p 8080:8080 \
  -e DATABASE_URL=postgres://… \
  -e CLAUDE_CODE_OAUTH_TOKEN=sk-ant-oat01-… \
  -v ./instance.yaml:/config/instance.yaml:ro \
  -e NEUTRON_INSTANCE=/config/instance.yaml \
  registry.example/neutron:latest
02

Kubernetes

Deploy the image as a stateless Deployment behind your ingress; keep the config in a ConfigMap and the two secrets in your secret store. A Helm chart renders one instance per entry in an instances: map — the same image, many agents.

instances:
  acme:
    host: agent.acme.example
    config:
      name: acme
      theme: { brand: "Acme Agent" }
      capabilities: [ # landing cards … ]
      channels: { gitlab: { enabled: true } }
      safety: { read_only: false, approval_required: [Bash] }
03

Coming: a setup wizard

A first-run wizard is on the roadmap — a fresh install with an empty database will walk you through the basics in the browser (name, model auth, admins, theme) and hand off to Settings for the advanced seams. Until then, the config above is the whole story.

← Back to features What's shipped →