Quickstart
Run Studio locally or deploy to your infrastructure
1) Run deco Studio
Pick the tier that fits. Studio hard-needs PostgreSQL and an
S3-compatible object store; NATS is bundled by the chart; the sandbox
(code-execution + previews) is an optional layer. The repo’s selfhost/
folder has ready-made scripts, example values, and the full dependency map.
| Tier | How | Dependencies |
|---|---|---|
| Local — CLI | bunx decocms | embedded, on your machine |
| Local — Compose | docker compose -f deploy/docker-compose/docker-compose.postgres.yml up | all bundled (Postgres + NATS + MinIO) |
| Local — Kubernetes | one helm install of the umbrella selfhost/examples/k8s-local | all bundled (dev Postgres + MinIO + NATS + sandbox) |
| Production — Kubernetes | helm install the chart | external/managed Postgres + S3 + NATS + ClickHouse |
Prefer a guided install? The self-host guide for coding agents ( SKILL.md ) interviews you — dependencies managed or in-cluster, secrets, sandbox — then writes an install directory you keep: an umbrella chart with pinned OCI dependencies plus your values, validated with helm template before anything is applied. The same directory installs on a laptop cluster and on a managed one, and no clone of this repo is involved. It’s plain markdown, so point any coding agent at it; in Claude Code you can install it as a skill:
Add it once (the repo is public), then tell Claude Code “install Studio”:
curl -fsSL https://raw.githubusercontent.com/decocms/studio/main/selfhost/skills/install.sh | sh
Option A: one-command local (CLI)
bunx decocms
Local instance with an embedded PostgreSQL — fully private. The package is
published as decocms ; the binary it ships is deco .
Option B: Docker Compose (bundled everything)
Runs Studio + PostgreSQL + NATS + MinIO as containers, all wired — no external services needed. Multi-arch images (runs native on Apple Silicon).
git clone https://github.com/decocms/studio.git
cd studio
docker compose -f deploy/docker-compose/docker-compose.postgres.yml up
open http://localhost:3000 # sign up — first user becomes org owner
Override the dev defaults (secrets, credentials) via a .env next to the compose
file. More details: Local: Docker Compose
Option C: run from source
git clone https://github.com/decocms/studio.git
cd studio
bun install
bun run dev
Option D: Kubernetes
The official chart ( deploy/helm/studio ) is lean: it deploys Studio + NATS
and expects external PostgreSQL, object storage (S3), and (optionally)
ClickHouse.
For a local cluster (Rancher Desktop / kind / minikube), an umbrella chart
( selfhost/examples/k8s-local ) composes the lean chart + sandbox layer as Helm
dependencies and adds throwaway Postgres + MinIO — so one helm install brings
up the whole stack, wired, including the sandbox:
helm dependency build selfhost/examples/k8s-local
helm install deco-studio selfhost/examples/k8s-local -n deco-studio --create-namespace
kubectl -n deco-studio port-forward svc/deco-studio 8080:80 # → http://localhost:8080 (reliable on any cluster)
# studio.localhost also works IF the LoadBalancer claimed :80 — on stock Rancher Desktop k3s Traefik owns :80, so use the port-forward
Use the release name deco-studio . ./selfhost/scripts/local-k8s.sh wraps this
(plus rollout wait and uninstall ).
For production, point the chart at managed services and use external secrets
- autoscaling. See Kubernetes: Helm Chart.
The full picture — tiers, the batteries-included vs. swappable-dependency model,
the sandbox (egress lockdown + previews), local Kubernetes runtimes, and the
production posture — lives in selfhost/README.md .
2) Create a Connection
When you open a new organization, deco Studio will prompt you to:
- Browse Store or
- Create Connection directly - provide the MCP URL (HTTP endpoint) and any required credentials
The Store is a catalog of Connections you can connect to. By default, the Store points to the official MCP Registry.
3) Create an organization and invite members
- Go to Members
- Invite teammates
- Assign roles (Admin/User) as needed
4) Create an Agent (virtual server)
- Go to Agents
- Click Create Agent
- Choose Include (only selected connections/tools) or Exclude (everything except the exclusions)
5) Generate an API key for a client
Create an API key with the minimum tool permissions needed (see API Keys).
6) Verify monitoring
Use Monitoring to confirm:
- tool invocations are being logged
- latency + error rates show up
- filters (time range, tool name, connection, agent) work as expected
The fastest smoke test is to call a tool through an agent endpoint (so you exercise aggregation + proxy + monitoring).
Found an error or want to improve this page?
Edit this page