Most on-device chat apps stop at one turn. Trunk lets you build a pipeline.

A single prompt-and-response is fine for a question. It's the wrong shape for "brainstorm this, then turn it into code, then clean up the explanation." Playground is Trunk's answer: chain reusable Agents into a linear Flow, and run the whole thing on-device, no cloud round-trip between steps.

12:34
Playground
GUIDE SETTINGS
Write & Review
Summarizer Reviewer
Explain & Code
Explainer Coder
+
Try it: drag the background to pan, drag an agent to move it, tap an output dot then an input dot to connect, tap the × on a connection to remove it, hold an agent to delete it, tap + to add one.

One input, several specialized passes

An Agent is deliberately small: a name and a system prompt, nothing else. Wire a few together and each one only has to be good at its own step. Below, a "Brainstorm" agent's output becomes a "Code writer" agent's input, whose output becomes a "Formatter" agent's input, three narrow jobs standing in for one that would otherwise be too vague to prompt well. Tap any node to read the exact prompt driving that step.

Brainstorm
"Generate 3 rough approaches"
Code writer
"Implement the strongest one"
Formatter
"Clean up and explain the result"
Input: "Explain quicksort, with working code"

A reusable library, not a one-off prompt

Write it yourself

Name the agent, write its system prompt directly. Save it once, reuse it across as many Flows as you want.

Or let the model draft it

Describe the agent's purpose in plain language and the currently-loaded model writes the system prompt for you, entirely on-device. Review and edit before saving; nothing is ever auto-committed.

Shared model, distinct personas

Every agent in a Flow shares whichever model is currently loaded, an agent is a different system prompt, not a different model download, so switching between them is instant.

Wire it by touch, not by config file

Drop Agents onto a canvas, drag them into place, then tap an output handle followed by an input handle to connect two nodes in order. No YAML, no node-graph SDK, just touch. Assign a model and generation settings to the Flow once, then run it whenever the input changes.

Explainer
Formatter