{"id":46798966,"url":"https://github.com/decocms/studio","last_synced_at":"2026-04-09T21:31:24.633Z","repository":{"id":282422012,"uuid":"948491206","full_name":"decocms/studio","owner":"decocms","description":"Open-source control plane for your AI agents. Connect tools, hire agents, track every token and dollar","archived":false,"fork":false,"pushed_at":"2026-04-02T23:21:16.000Z","size":112029,"stargazers_count":354,"open_issues_count":74,"forks_count":40,"subscribers_count":3,"default_branch":"main","last_synced_at":"2026-04-02T23:51:03.471Z","etag":null,"topics":["agents","ai","bun","deco","llm","mcp","mcp-client","mcp-server","n8n","n8n-workflow","nodejs","typescript","workflows"],"latest_commit_sha":null,"homepage":"https://decocms.com/studio","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/decocms.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":"MAINTAINERS.txt","copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2025-03-14T12:37:02.000Z","updated_at":"2026-04-02T23:13:18.000Z","dependencies_parsed_at":"2025-12-11T06:03:54.972Z","dependency_job_id":"01fa4127-da39-4679-b486-14a8176d6ea9","html_url":"https://github.com/decocms/studio","commit_stats":null,"previous_names":["deco-cx/chat","decocms/admin","decocms/mesh","decocms/studio"],"tags_count":883,"template":false,"template_full_name":null,"purl":"pkg:github/decocms/studio","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/decocms%2Fstudio","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/decocms%2Fstudio/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/decocms%2Fstudio/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/decocms%2Fstudio/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/decocms","download_url":"https://codeload.github.com/decocms/studio/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/decocms%2Fstudio/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31487543,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-06T17:22:55.647Z","status":"ssl_error","status_checked_at":"2026-04-06T17:22:54.741Z","response_time":112,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["agents","ai","bun","deco","llm","mcp","mcp-client","mcp-server","n8n","n8n-workflow","nodejs","typescript","workflows"],"created_at":"2026-03-10T05:14:15.776Z","updated_at":"2026-04-06T20:03:42.386Z","avatar_url":"https://github.com/decocms.png","language":"TypeScript","readme":"\u003ch1 align=\"center\"\u003eDeco CMS\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n\u003cem\u003eOpen-source · TypeScript-first · Deploy anywhere\u003c/em\u003e\u003cbr/\u003e\u003cbr/\u003e\n\u003cb\u003eOpen-source control plane for your AI agents.\u003c/b\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n\u003ca href=\"https://docs.decocms.com/\"\u003eDocs\u003c/a\u003e ·\n\u003ca href=\"https://decocms.com/discord\"\u003eDiscord\u003c/a\u003e ·\n\u003ca href=\"https://decocms.com/studio\"\u003edecocms.com/studio\u003c/a\u003e\n\u003c/p\u003e\n\n\u003e **TL;DR:** Hire agents. Connect tools. Organize them into projects with a UI that fits the job. Track every token and dollar. Self-host or use the cloud.\n\n---\n\n## What is Deco CMS?\n\nStudio is where you hire agents, connect tools, and organize them into projects that actually do things.\n\nAgents come with real skills and battle-tested prompts. Connections give them access to your tools — GitHub, Slack, Postgres, OpenRouter, anything that speaks MCP — set up through a web UI with one-click OAuth. Projects bring agents and connections together around a goal: each project gets its own sidebar and UI, shaped by what's inside it.\n\nEverything is tracked — tokens, costs, errors, latency — per connection, per agent. Install locally and it stays private. Sync to the cloud for remote access, team roles, and shared billing.\n\n```\n┌─────────────────────────────────────────────────────────────────┐\n│                           Clients                               │\n│         Cursor · Claude · VS Code · Custom Agents               │\n└───────────────────────────┬─────────────────────────────────────┘\n                            │\n                            ▼\n┌─────────────────────────────────────────────────────────────────┐\n│                         DECO CMS                              │\n│  Agents · Connections · Projects · Observability · Token Vault  │\n└───────────────────────────┬─────────────────────────────────────┘\n                            │\n                            ▼\n┌─────────────────────────────────────────────────────────────────┐\n│                     Tools \u0026 MCP Servers                          │\n│      GitHub · Slack · Postgres · OpenRouter · Your APIs         │\n└─────────────────────────────────────────────────────────────────┘\n```\n\n---\n\n## Quick Start\n\n```bash\nbunx decocms\n```\n\nOr clone and run from source:\n\n```bash\ngit clone https://github.com/decocms/studio.git\nbun install\nbun run dev\n```\n\n\u003e runs at [http://localhost:3000](http://localhost:3000) (client) + API server\n\n---\n\n## What you get\n\n### Agents\n\nBrowse and hire specialized AI agents from the built-in store. Each agent knows how to use specific tools and comes with battle-tested prompts. Agents compose — they can call each other — and every action is tracked with cost attribution.\n\n### Connections\n\nSet up MCP connections through a web UI with one-click OAuth. No JSON configs. Monitor latency, errors, and costs per connection. Share tools across your team without sharing credentials.\n\nAs tool surfaces grow, Studio exposes **Virtual MCPs** — one endpoint, different strategies for which tools to surface:\n\n- **Full-context:** expose everything (simple, deterministic, good for small toolsets)\n- **Smart selection:** narrow the toolset before execution\n- **Code execution:** load tools on demand in a sandbox\n\n### Projects\n\nProjects 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.\n\nYou can also define outcomes declaratively and let Studio work backward to derive milestones, assign agents, and verify results.\n\n### Observability\n\nToken spend per connection — OpenRouter, Perplexity, Firecrawl, all of it. Latency, errors, bottlenecks. One dashboard.\n\n### From your laptop to your org\n\n| | |\n|---|---|\n| **Local** | `bunx decocms` on your laptop. Embedded PostgreSQL. Private. |\n| **Cloud** | Log in to studio.decocms.com. Control local projects from any browser. |\n| **Team** | Invite people. Roles. Shared connections. Cost attribution. |\n| **Enterprise** | Self-hosted. Your infra. Your rules. |\n\n---\n\n## Core Capabilities\n\n| Capability | What it does |\n|---|---|\n| **Agents** | Browse, hire, and compose AI agents with tracked skills and cost attribution |\n| **Connections** | Route MCP traffic through one governed endpoint with auth, proxy, and token vault |\n| **Projects** | Organize agents and connections around goals with an adaptive UI |\n| **Virtual MCPs** | Compose and expose governed toolsets as new MCP endpoints |\n| **Observability** | Traces, costs, errors, and latency per connection — one dashboard |\n| **Access Control** | RBAC via Better Auth — OAuth 2.1 + API keys per workspace/project |\n| **Multi-tenancy** | Workspace/project isolation for config, credentials, policies, and audit logs |\n| **Event Bus** | Pub/sub between connections with scheduled/cron delivery and at-least-once guarantees |\n| **Bindings** | Capability contracts so tools target interfaces, not specific implementations |\n| **Store** | Discover and install agents, tools, and templates |\n\n---\n\n## Define Tools\n\nType-safe, audited, observable, callable via MCP.\n\n```ts\nimport { z } from \"zod\";\nimport { defineTool } from \"~/core/define-tool\";\n\nexport const CONNECTION_CREATE = defineTool({\n  name: \"CONNECTION_CREATE\",\n  description: \"Create a new MCP connection\",\n  inputSchema: z.object({\n    name: z.string(),\n    connection: z.object({\n      type: z.enum([\"HTTP\", \"SSE\", \"WebSocket\"]),\n      url: z.string().url(),\n      token: z.string().optional(),\n    }),\n  }),\n  outputSchema: z.object({\n    id: z.string(),\n    scope: z.enum([\"workspace\", \"project\"]),\n  }),\n  handler: async (input, ctx) =\u003e {\n    await ctx.access.check();\n    const conn = await ctx.storage.connections.create({\n      projectId: ctx.project?.id ?? null,\n      ...input,\n      createdById: ctx.auth.user!.id,\n    });\n    return { id: conn.id, scope: conn.projectId ? \"project\" : \"workspace\" };\n  },\n});\n```\n\nEvery tool call gets input/output validation, access control, audit logging, and OpenTelemetry traces automatically.\n\n---\n\n## Project Structure\n\n```\n├── apps/\n│   ├── mesh/                # Full-stack Deco CMS (Hono API + Vite/React)\n│   │   ├── src/\n│   │   │   ├── api/         # Hono HTTP + MCP proxy routes\n│   │   │   ├── auth/        # Better Auth (OAuth + API keys)\n│   │   │   ├── core/        # MeshContext, AccessControl, defineTool\n│   │   │   ├── tools/       # Built-in MCP management tools\n│   │   │   ├── storage/     # Kysely DB adapters\n│   │   │   ├── event-bus/   # Pub/sub event delivery system\n│   │   │   ├── encryption/  # Token vault \u0026 credential management\n│   │   │   ├── observability/  # OpenTelemetry tracing \u0026 metrics\n│   │   │   └── web/         # React 19 admin UI\n│   │   └── migrations/      # Kysely database migrations\n│   └── docs/                # Astro documentation site\n│\n└── packages/\n    ├── bindings/            # Core MCP bindings and connection abstractions\n    ├── runtime/             # MCP proxy, OAuth, and runtime utilities\n    ├── ui/                  # Shared React components (shadcn-based)\n    ├── cli/                 # CLI tooling (deco commands)\n    ├── create-deco/         # Project scaffolding (npm create deco)\n    └── vite-plugin-deco/    # Vite plugin for Deco projects\n```\n\n---\n\n## Development\n\n```bash\nbun install          # Install dependencies\nbun run dev          # Run dev server (client + API)\nbun test             # Run tests\nbun run check        # Type check\nbun run lint         # Lint\nbun run fmt          # Format\n```\n\n### Studio commands (from `apps/mesh/`)\n\n```bash\nbun run dev:client     # Vite dev server (port 4000)\nbun run dev:server     # Hono server with hot reload\nbun run migrate        # Run database migrations\n```\n\n### Worktrees\n\n`dev:worktree` routes `http://\u003cWORKTREE_SLUG\u003e.localhost` via Caddy — useful for running multiple workspaces without port conflicts.\n\n```bash\n# One-time setup\nbrew install caddy \u0026\u0026 caddy start\n\n# Start\nWORKTREE_SLUG=my-feature bun run dev:worktree\n\n# Conductor adapter (sets WORKTREE_SLUG from CONDUCTOR_WORKSPACE_NAME)\nbun run dev:conductor\n```\n\n---\n\n## Deploy Anywhere\n\n```bash\n# Docker (embedded PostgreSQL)\ndocker compose -f deploy/docker-compose.yml up\n\n# Docker (PostgreSQL)\ndocker compose -f deploy/docker-compose.postgres.yml up\n\n# Bun\nbun run build:client \u0026\u0026 bun run build:server \u0026\u0026 bun run start\n\n# Kubernetes (Helm)\nhelm install deco-studio oci://ghcr.io/decocms/chart-deco-studio --version \u003cversion\u003e -n deco-studio --create-namespace\n```\n\nNo vendor lock-in. Runs on Docker, Kubernetes, AWS, GCP, or local runtimes.\n\n---\n\n## Tech Stack\n\n| Layer | Tech |\n|---|---|\n| Runtime | Bun / Node |\n| Language | TypeScript + Zod |\n| Framework | Hono (API) + Vite + React 19 |\n| Database | Kysely → embedded PostgreSQL / PostgreSQL |\n| Auth | Better Auth (OAuth 2.1 + API keys) |\n| Observability | OpenTelemetry |\n| UI | React 19 + Tailwind v4 + shadcn |\n| Protocol | Model Context Protocol (MCP) |\n\n---\n\n## Roadmap\n\n- [ ] Agent marketplace — discover, hire, and compose agents\n- [ ] Declarative planning engine\n- [ ] Cost analytics and spend caps\n- [ ] Remote access from any browser\n- [ ] Live tracing debugger\n- [ ] Workflow orchestration with guardrails\n\n---\n\n## License\n\n**Sustainable Use License (SUL)** — see [LICENSE.md](./LICENSE.md).\n\n- Free to self-host for internal use\n- Free for client projects (agencies, SIs)\n- Commercial license required for SaaS or revenue-generating production systems\n\nQuestions? [builders@decocms.com](mailto:builders@decocms.com)\n\n---\n\n## Contributing\n\n```bash\nbun run fmt      # Format\nbun run lint     # Lint\nbun test         # Test\n```\n\nSee `AGENTS.md` for coding guidelines.\n\n---\n\n\u003cdiv align=\"center\"\u003e\n  \u003csub\u003eMade with care by the \u003ca href=\"https://decocms.com\"\u003edeco\u003c/a\u003e community\u003c/sub\u003e\n\u003c/div\u003e\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdecocms%2Fstudio","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdecocms%2Fstudio","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdecocms%2Fstudio/lists"}