decocms

studio

Built by decocms โ€ข 354 stars

What is studio?

Open-source control plane for your AI agents. Connect tools, hire agents, track every token and dollar

How to use studio?

1. Install a compatible MCP client (like Claude Desktop). 2. Open your configuration settings. 3. Add studio using the following command: npx @modelcontextprotocol/studio 4. Restart the client and verify the new tools are active.
๐Ÿ›ก๏ธ Scoped (Restricted)
npx @modelcontextprotocol/studio --scope restricted
๐Ÿ”“ Unrestricted Access
npx @modelcontextprotocol/studio

Key Features

Native MCP Protocol Support
Real-time Tool Activation & Execution
Verified High-performance Implementation
Secure Resource & Context Handling

Optimized Use Cases

Extending AI models with custom local capabilities
Automating system workflows via natural language
Connecting external data sources to LLM context windows

studio FAQ

Q

Is studio safe?

Yes, studio follows the standardized Model Context Protocol security patterns and only executes tools with explicit user-granted permissions.

Q

Is studio up to date?

studio is currently active in the registry with 354 stars on GitHub, indicating its reliability and community support.

Q

Are there any limits for studio?

Usage limits depend on the specific implementation of the MCP server and your system resources. Refer to the official documentation below for technical details.

Official Documentation

View on GitHub
<h1 align="center">deco Studio</h1> <p align="center"> <em>Open-source ยท TypeScript-first ยท Deploy anywhere</em><br/><br/> <b>Open-source private AI workspace for organizations.</b> </p> <p align="center"> <a href="https://docs.decocms.com/">Docs</a> ยท <a href="https://decocms.com/discord">Discord</a> ยท <a href="https://decocms.com/studio">decocms.com/studio</a> </p> <p align="center"> <a href="https://github.com/decocms/studio/actions/workflows/test.yml"><img alt="Checks &amp; unit tests" src="https://img.shields.io/github/actions/workflow/status/decocms/studio/test.yml?branch=main&label=checks&style=flat-square"></a> <a href="https://www.npmjs.com/package/decostudio"><img alt="npm version" src="https://img.shields.io/npm/v/decostudio?style=flat-square&label=decostudio"></a> <a href="./LICENSE.md"><img alt="MIT license" src="https://img.shields.io/github/license/decocms/studio?style=flat-square"></a> <a href="https://github.com/decocms/studio/stargazers"><img alt="GitHub stars" src="https://img.shields.io/github/stars/decocms/studio?style=flat-square"></a> <a href="https://github.com/decocms/studio/graphs/contributors"><img alt="Contributors" src="https://img.shields.io/github/contributors/decocms/studio?style=flat-square"></a> <a href="https://decocms.com/discord"><img alt="Discord" src="https://img.shields.io/badge/discord-join-5865F2?style=flat-square&logo=discord&logoColor=white"></a> <br/> <img alt="Model Context Protocol" src="https://img.shields.io/badge/MCP-control%20plane-black?style=flat-square"> <img alt="TypeScript" src="https://img.shields.io/badge/TypeScript-3178C6?style=flat-square&logo=typescript&logoColor=white"> <img alt="Bun" src="https://img.shields.io/badge/Bun-000000?style=flat-square&logo=bun&logoColor=white"> <img alt="React 19" src="https://img.shields.io/badge/React%2019-61DAFB?style=flat-square&logo=react&logoColor=black"> <img alt="Hono" src="https://img.shields.io/badge/Hono-E36002?style=flat-square&logo=hono&logoColor=white"> <img alt="PostgreSQL" src="https://img.shields.io/badge/PostgreSQL-4169E1?style=flat-square&logo=postgresql&logoColor=white"> <img alt="OpenTelemetry" src="https://img.shields.io/badge/OpenTelemetry-425CC7?style=flat-square&logo=opentelemetry&logoColor=white"> </p>

TL;DR: Your team needs a secure internal vibecoding platform. You just found it. Configure agents with team context. Connect private MCPs once โ€” share capabilities, not credentials. Keep the model layer interchangeable. Roll out across the organization with SSO, RBAC, audit logs, and cost controls โ€” all through one MCP endpoint. Local-first. Self-host or use the cloud.


What is deco Studio?

Studio packages the infrastructure behind an internal AI rollout: model routing, MCP authentication, agent configuration, SSO, RBAC, audit logs, and usage accounting. Your teams get chat. You keep control.

Under the hood it's one control plane for your AI agents โ€” one MCP endpoint for all your agents, tools, and models. Agents package context, tools, and policy into something you publish to the organization. Connections give them governed access to your systems โ€” GitHub, Slack, Postgres, Sentry, anything that speaks MCP โ€” with tokens stored in an encrypted vault. Models stay interchangeable: OpenRouter or direct providers, chosen per agent and per tool.

Start with one team. Standardize approved models, tools, and context. Expand across the organization without copying secrets or rebuilding the platform. Install locally and it stays private; sync to the cloud for remote access, team roles, and shared billing.

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                             Clients                             โ”‚
โ”‚            Cursor ยท Claude ยท VS Code ยท Custom Agents            โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                            โ”‚
                            โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                           DECO STUDIO                           โ”‚
โ”‚      Agents ยท Connections ยท Models ยท Vault ยท Observability      โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                            โ”‚
                            โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                       Tools & MCP Servers                       โ”‚
โ”‚       GitHub ยท Slack ยท Postgres ยท OpenRouter ยท Your APIs        โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Quick Start

Install Docker with Compose, then run from source:

git clone https://github.com/decocms/studio.git
cd studio
docker compose up --build --watch

Open http://localhost:4000. Compose starts PostgreSQL, NATS, object storage, migrations, and the hot-reloading API and web app. See CONTRIBUTING.md for contributor setup and worktrees.


What you get

Agents

Package context, tools, and policy into an agent. Define instructions, add skills and files, grant approved MCP access, choose a model policy, then publish the agent to the organization. Each agent is its own MCP endpoint โ€” callable from Cursor, Claude Desktop, your own code, or another agent. Agents compose, and every action is tracked with cost attribution.

Connections

Connect private systems once, securely. Register MCP servers at the organization level through a web UI with one-click OAuth โ€” no JSON configs. Tokens live in the encrypted vault, and you grant tool-level access by organization, role, or agent. Share MCP capabilities โ€” not credentials.

As tool surfaces grow, Studio exposes Virtual MCPs โ€” one endpoint, different strategies for which tools to surface:

  • Full-context: expose everything (simple, deterministic, good for small toolsets)
  • Smart selection: narrow the toolset before execution
  • Code execution: load tools on demand in a sandbox

Models

Keep the AI layer interchangeable. Use OpenRouter or connect Anthropic, OpenAI, Google, or any compatible provider directly โ€” the best model for each agent and tool, behind one router. For coding work, engineers can link their own Claude Code or Codex session and use the subscription already authenticated on their machine.

Projects

Projects bring agents and connections together around a goal. The project's UI adapts to what's inside โ€” add a content agent and a CMS connection, the sidebar shows content management; add an analytics agent and a database, it shows dashboards and queries. The UI you see is the UI that's relevant for operating that project.

Observability

Account for every model and tool call. Trace the user, agent, model, tools, latency, errors, tokens, and cost for every thread. Break usage down by agent, connection, organization, or teammate โ€” one dashboard.

From your desktop to your org

LocalDocker Compose on your laptop, including PostgreSQL, NATS, and object storage.
CloudLog in to studio.decocms.com. Control local projects from any browser.
TeamInvite people. SSO and role-based access. Shared connections. Cost attribution.
EnterpriseSelf-hosted. Organization isolation, tool-scoped API keys, audit logs. Your infra, your rules.

Core Capabilities

CapabilityWhat it does
AgentsPackage context, tools, and policy into publishable agents with cost attribution
ConnectionsRoute MCP traffic through one governed endpoint with auth, proxy, and encrypted token vault
ModelsInterchangeable AI layer โ€” OpenRouter or direct providers, model policy per agent
ProjectsOrganize agents and connections around goals with an adaptive UI
Virtual MCPsCompose and expose governed toolsets as new MCP endpoints
ObservabilityTraces, costs, errors, and latency per user, agent, and connection โ€” one dashboard
Access ControlSSO + RBAC via Better Auth โ€” OAuth 2.1 and tool-scoped API keys per workspace/project
Multi-tenancyOrganization/project isolation for config, credentials, policies, and audit logs
BindingsCapability contracts so tools target interfaces, not specific implementations
StoreDiscover and install agents, tools, and templates

Define Tools

Type-safe, audited, observable, callable via MCP.

import { z } from "zod";
import { defineTool } from "~/core/define-tool";

export const CONNECTION_CREATE = defineTool({
  name: "CONNECTION_CREATE",
  description: "Create a new MCP connection",
  inputSchema: z.object({
    name: z.string(),
    connection: z.object({
      type: z.enum(["HTTP", "SSE", "WebSocket"]),
      url: z.string().url(),
      token: z.string().optional(),
    }),
  }),
  outputSchema: z.object({
    id: z.string(),
    scope: z.enum(["workspace", "project"]),
  }),
  handler: async (input, ctx) => {
    await ctx.access.check();
    const conn = await ctx.storage.connections.create({
      projectId: ctx.project?.id ?? null,
      ...input,
      createdById: ctx.auth.user!.id,
    });
    return { id: conn.id, scope: conn.projectId ? "project" : "workspace" };
  },
});

Every tool call gets input/output validation, access control, audit logging, and OpenTelemetry traces automatically.


Documentation

Studio documentation lives in docs-tanstack, alongside the Storefront documentation. Update public product guides and architecture there. Workspace READMEs and engineering plans stay here with the implementation.

Project Structure

Applications

WorkspacePurpose
apps/apiHono API, authentication, tools, storage, migrations, and the deco CLI
apps/webVite and React 19 administration interface

Packages

WorkspacePurpose
packages/bindingsRuntime-validated MCP capability contracts
packages/create-deconpm create deco project scaffolding CLI
packages/e2eBlack-box Playwright suite for Studio
packages/harness-runnerIn-sandbox coding-agent harness process
packages/mcp-utilsMCP proxy, gateway, aggregation, and sandbox primitives
packages/runtimeRuntime helpers for MCP servers, OAuth, tools, and triggers
packages/sandboxAgent sandbox lifecycle, daemon, dispatch, and proxy implementation
packages/sandbox-controllerSandbox provider bundled for a remote host such as the control plane
packages/sharedPrivate isomorphic contracts, SDK utilities, and async primitives
packages/typegenTyped client generator for Studio Virtual MCPs
packages/uiInternal React design system

Development

bun install          # Install dependencies
bun run dev          # Docker Compose Watch: dependencies, migrations, API + web
bun test             # Run tests
bun run check        # Type check
bun run lint         # Lint
bun run fmt          # Format

App-specific commands

bun run --cwd=apps/web dev          # Vite dev server (port 4000)
bun run --cwd=apps/api dev:server   # Hono server with hot reload
bun run --cwd=apps/api migrate      # Run database migrations

For parallel worktrees, Compose lifecycle commands, and frontend-only work, see CONTRIBUTING.md.


Deploy Anywhere

# Docker Compose: released Studio + PostgreSQL + NATS + object storage
docker compose -f selfhost/examples/docker-compose/compose.yaml up -d

# Kubernetes (Helm)
helm install deco-studio oci://ghcr.io/decocms/chart-deco-studio --version <version> -n deco-studio --create-namespace

Run Studio with Docker Compose or Kubernetes on your own infrastructure.

What you need to run it

TierFootprint
LaptopDocker with Compose; the development stack includes its dependencies.
DockerPublished Studio image with configured PostgreSQL, NATS, and object storage.
Production (Helm)PostgreSQL you bring, plus NATS for streaming and cross-pod coordination, ClickHouse + OTel Collector (traces and analytics), and the sandbox operator (isolated agent environments on Kubernetes). Your identity provider, your model keys, your storage.

Production topology

graph TB
    clients["MCP clients โ€” Cursor ยท Claude ยท VS Code ยท your code"]

    clients -->|"one MCP endpoint ยท SSO ยท RBAC ยท audit"| api

    subgraph k8s ["Kubernetes (Helm)"]
        api["Studio API + Admin UI"]
        api --> sandbox["Agent sandboxes<br/>(sandbox-operator)"]
        api <-->|"streams and broadcasts"| nats["NATS"]
        api -->|"traces ยท costs"| otel["OTel Collector"]
        nats <-->|"streams and broadcasts"| worker["Workers<br/>DBOS runs"]
        otel --> ch[("ClickHouse")]
    end

    pg[("PostgreSQL")]
    api --> pg
    worker <-->|"DBOS queues and journal"| pg

    subgraph upstream ["Models & tools"]
        models["Anthropic ยท OpenAI<br/>OpenRouter ยท Ollama"]
        mcps["GitHub ยท Slack ยท Postgres<br/>your MCP servers"]
    end

    api -->|"model routing ยท vaulted credentials"| upstream

Every box is optional except Studio and PostgreSQL โ€” start small, turn on the rest as the rollout grows.


Tech Stack

LayerTech
RuntimeBun / Node
LanguageTypeScript + Zod
FrameworkHono (API) + Vite + React 19
DatabaseKysely โ†’ PostgreSQL
AuthBetter Auth (OAuth 2.1 + API keys)
ObservabilityOpenTelemetry
UIReact 19 + Tailwind v4 + shadcn
ProtocolModel Context Protocol (MCP)

Roadmap

  • Agent marketplace โ€” discover, hire, and compose agents
  • Declarative planning engine
  • Cost analytics and spend caps
  • Remote access from any browser
  • Live tracing debugger
  • Workflow orchestration with guardrails

License

MIT โ€” see LICENSE.md.

Questions? builders@decocms.com


Contributing

bun run fmt      # Format
bun run lint     # Lint
bun test         # Test

See AGENTS.md for coding guidelines, CONTRIBUTING.md for the contribution workflow, and TESTING.md for the testing rules.

Good first steps: open an issue, pick one labeled good first issue, or ask in Discord.


Contributors

Studio is built in the open. Thanks to everyone who has shipped a commit.

<a href="https://github.com/decocms/studio/graphs/contributors"> <img src="https://contrib.rocks/image?repo=decocms/studio" alt="Contributors to decocms/studio" /> </a>

Maintainers โ€” see MAINTAINERS.txt:

@guitavano ยท @viktormarinho ยท @mcandeia ยท @pedrofrxncx ยท @JonasJesus42 ยท @aka-sacci-ccr ยท @vibegui ยท @tlgimenes ยท @vibe-dex ยท @nicacioliveira


<div align="center"> <sub>Made with care by the <a href="https://decocms.com">deco</a> community</sub> </div>

Global Ranking

-
Trust ScoreMCPHub Index

Based on codebase health & activity.

Manual Config

{ "mcpServers": { "studio": { "command": "npx", "args": ["studio"] } } }