**Content Studio is the design agent LangChain runs, now open source.** Add your brand and deploy it
to your team's Slack with Managed Deep Agents. Anyone can ask it like they'd ask a designer, attach what they have, and
get finished, on-brand files back, from a resized ad to a launch film.
Since August it has shipped over 3,000 assets for us, posts with its work drew about 4.5M views on
X, and three in four requests come from outside marketing. [How we built it](https://www.langchain.com/blog/design-agent?utm_source=github&utm_medium=readme&utm_campaign=design-agent) goes deeper
into each part.
## See it work
We asked Content Studio for its own launch film. It went full Rocky.
https://github.com/user-attachments/assets/ee5b98e0-7ec6-4b24-ada6-1f27087947a3
From a 1-bit chick to champion in 47 seconds.
## How it works
Content Studio is a [Deep Agents](https://github.com/langchain-ai/deepagents) agent deployed on
[Managed Deep Agents](https://docs.langchain.com/langsmith/python/managed-deep-agents-overview?utm_source=github&utm_medium=readme&utm_campaign=design-agent).
Managed Deep Agents runs the infrastructure: Slack, sandboxes, memory, schedules and tracing. This
repo is the design agent on top. The model makes the creative calls, and code renders, checks and
delivers.
How we run it at LangChain. Your copy starts with the integrations you turn on (Integrations).
- **Slack.** Mention it in a thread with a brief and any files. MDA's Slack app hands the message
and attachments to the agent, and the finished files come back to the same thread. While it
works, one message updates step by step, a footer shows what's running and the cost so far, and
anything you add mid-job reaches the work in progress.
- **A computer per thread.** Each thread gets its own LangSmith sandbox: a Linux machine with
Chrome, FFmpeg, [HyperFrames](https://hyperframes.heygen.com), D2 and your fonts, built from one
pinned recipe ([`sandbox/setup.sh`](sandbox/)). Everything it makes is code in a project folder
there (a slide is HTML, a film is an animation timeline), so a change is an edit and a re-render,
not a restart. API keys never enter it.
- **Skills and a design wiki.** The always-on prompt is small. For each ask it first reads a router
skill that picks the right workflow, from a resized ad to a launch film, out of 35
[skills](skills/). The wiki holds the craft (type, colour, layout, charts) and your brand pack
holds the facts. Skills load only when a job needs them, served by MDA from Context Hub.
- **Your tools.** Video is built in HyperFrames, which treats a film as a web page on a timeline.
[Paper](https://paper.design) is a shared canvas where you edit a storyboard or layout directly.
Image, voice and music models run as tools outside the sandbox, and MCP servers like Notion,
Linear, GitHub and Figma connect through MDA, with each person signed in as themselves.
- **Async subagents.** On a big job the main agent plans, splits the work and starts subagents in
the background on the same sandbox and files. MDA wakes it when one finishes, fails or stalls, so
it never sits waiting and can keep talking to you. Films go storyboard, animatic, then
production, and code makes every part pass review before assembly.
- **Memory.** Tell it a rule once ("never use orange on LinkedIn") and it saves it that turn. MDA
gives it two layers of files: team memory everyone shares and personal memory for each person,
and each layer's index loads into every run.
- **It gets better.** After a job, `learn_from_job` writes notes on what worked against the skill
it used. Later jobs read and rate those notes, and the ones that don't hold up are dropped.
### Watch it explain itself
We asked it to explain its own harness as a nature documentary, starring a pixel parrot. It walks
through the computer, the tools and the context behind its work.
https://github.com/user-attachments/assets/65eac8e4-0fac-4a5a-9cca-02e26a0a8baa
Storyboarded, built and narrated by the agent, in one Slack thread.
The prompt that made this film
The agent made it from this ask and a few rounds of notes:
> Make a short explainer of how you create videos in code, end to end, for our blog post on the
> media harness we built on Deep Agents. Narrate it like a David Attenborough nature documentary,
> starring the pixel parrot from our promo, with your subagents as its flock. Keep it technical
> enough for an engineer, in real terms: skills, wiki, tools, apps. Storyboard it before you build,
> and end on "Built on Managed Deep Agents".
Read the [architecture](docs/architecture/README.md), or start changing it:
[instructions.md](instructions.md) · [skills/](skills/) · [Customization](docs/customization.md) ·
[Evals](docs/evals.md) · [Operations](OPERATIONS.md) · [Contributing](CONTRIBUTING.md).
## Why it doesn't look like AI
The same prompt to a local coding agent with a brand skill, and to Content Studio.
- **It looks at its work.** It renders, then looks at the image before it posts anything.
- **Your brand is code.** Layouts only take your tokens: your colours, fonts and spacing.
- **It checks what a machine can count.** Colours, fonts, contrast, sizes and chart math are checked
in code on every render. Taste stays with your designers.
## Quickstart
| Building it yourself | Starting here |
| --- | --- |
| Months on a harness, a sandbox, skills and a Slack UX | Fork it, add your brand, deploy with one command |
| Polished work that looks like a hundred others | Work that follows your brand, checked on every render |
| Design requests wait in a queue | Anyone asks in Slack: a graphic in minutes, a long deck overnight |
| Every team fixes the same mistakes | Fix a skill once, and every asset after it follows |
This repository is a [Managed Deep Agents](https://docs.langchain.com/langsmith/python/managed-deep-agents-overview?utm_source=github&utm_medium=readme&utm_campaign=design-agent) project, so it deploys to your LangSmith
workspace as it is. You need a LangSmith account (Managed Deep Agents is in public beta on
LangSmith Cloud) and a model key:
```bash
curl -fsSL https://raw.githubusercontent.com/langchain-ai/design-agent/main/install.sh | bash
cd design-agent
uv run design-agent config set LANGSMITH_API_KEY=lsv2_… ANTHROPIC_API_KEY=sk-ant-…
uv run design-agent sandbox publish # once per workspace: the agent's computer
uv run mda deploy
```
The installer gets [uv](https://docs.astral.sh/uv/) if you don't have it, clones the repository and
installs its dependencies; `git clone` and `uv sync` do the same.
The first deploy sets up the agent's Slack app. Authorize it in your workspace, then mention the
agent in a channel. It's how we run ours at LangChain. Try changes on a separate copy with
`uv run mda deploy --name design-agent-test`; [Deploy with MDA](docs/deploy-mda.md) covers keys,
what ships and checking it works.
**Or ask your coding agent.** Open the repo in Claude Code, Codex or Cursor and say what you want.
[AGENTS.md](AGENTS.md) routes each request to a step-by-step [skill](.agents/skills/):
| Say | It will |
| --- | --- |
| "Deploy it to our Slack." | publish the sandbox, check what ships, and deploy after your yes |
| "Build our brand pack from our website and brand guide." | draft the pack, validate it, and ask you to review it |
| "Teach it to make our weekly newsletter header." | add a skill for it and try it on a real request |
| "Did that change make it better?" | run the evals before and after, and show you the numbers |
## Try it locally
The demo runs the real agent, sandbox and checks with a scripted model and no API keys. It needs
**Docker**, and leaves a launch card in three sizes and a 4-second teaser in `workspace/out/demo/`:
```bash
uv run design-agent sandbox build
uv run design-agent demo
```
With a model key in `.env`, ask for something real. Files land in `workspace/out//`, and the
last line tells you what the run cost:
```bash
uv run design-agent ask "A LinkedIn card announcing our design review service, 1200x627."
```
## Make it yours
| Want | Add | Guide |
| --- | --- | --- |
| Your brand | `workspace/brand/` (until then, a neutral sample brand) | [brand-onboarding skill](.agents/skills/brand-onboarding/SKILL.md) |
| Generated images | `OPENAI_API_KEY` | [Models](docs/models.md) |
| Voice, music, sound effects | `ELEVENLABS_API_KEY` | [sound skill](skills/sound/SKILL.md) |
| The Paper canvas | `PAPER_MODE=local` with Paper Desktop, or `bridged` when deployed | [Paper](docs/partners/paper.md) |
| Web search, your docs, other tools | MCP servers in `config/mcp.toml` | [Customization](docs/customization.md) |
Everything on this page uses LangChain's brand, because that's the one we run. Licensed fonts go in
`private-fonts/`, which Git ignores.
## Questions
**What does it cost?** The code is free (Apache 2.0). You pay your model provider: at LangChain the
median request costs about 50 cents in model spend, and long films and decks cost more. Managed Deep
Agents [hosting is paid](https://www.langchain.com/pricing?utm_source=github&utm_medium=readme&utm_campaign=design-agent); it runs the agent, the sandboxes,
the Slack app and the schedules that you'd otherwise build and operate yourself.
**Will it use my brand?** Yes. Add your brand pack and every file follows it. The
[brand-onboarding skill](.agents/skills/brand-onboarding/SKILL.md) builds the pack with you from
your brand guide, website, files or a Paper file.
**Where do I start?** With the graphic your team asks for every week. Let people brief the agent,
review the work and ask for changes in Slack, then teach it the next thing.
**Do I need Slack?** No. Call the deployment's API, open it in LangSmith Studio, or use the
terminal (`design-agent ask`). On Managed Deep Agents, long jobs that work in the background
(films, parallel looks) report back in Slack; over the API, keep to requests that finish in one
turn.
**Is it safe with my keys?** The sandbox never holds a credential and has no network by default.
Host tools do the fetching, generating and delivering, and drop results in as files.
**Which models?** Claude Opus 5.5 by default. OpenAI and Google models, any OpenAI-compatible
endpoint and the LangSmith Gateway work too. See [Models](docs/models.md).
**Can I run it on my own servers?** Yes. It's Apache 2.0, and [Self-hosting](docs/self-hosting.md)
runs the same agent with Docker, an HTTP API and your own Slack app.
**Why two names?** Content Studio is what we call the agent at LangChain, and the name its Slack app
gets unless you set `DESIGN_AGENT_SLACK_NAME`. The repository, package and command are `design-agent`.
**Does it replace a designer?** No. It takes the repetitive requests, so designers spend their time on
the work only they can do, and their judgment lives on in its skills and checks.
**Build your own.** Fork it, add your brand tokens, fonts and skills, and deploy it to your team's
Slack. [Quickstart](#quickstart). If it's useful, a star helps other teams find it.
## Built with