Agent Studio
The editor where every Fruxon agent is configured, tested, and deployed
Studio is where agents are built. An agent is one definition: its model, its prompts, its tools, and the settings that shape how it behaves. Studio shows that definition as a single form. Fill it in, test it in the chat next to it, and deploy it. There's nothing about an agent that lives outside it.
To open Studio, click Open Studio on the agent's page. A new agent opens in Studio as soon as you create it.
Production and Dev runs
Every run of an agent is either Production or Dev:
| Runs | What they are |
|---|---|
| Production | Runs of the deployed revision serving real traffic. |
| Dev | Test runs you start while building, such as from Studio's Test chat. |
The backend calls the Dev bucket TEST because it shares the same execution-origin axis used by traces, budgets, and cost reports. The UI labels it Dev so it reads as the builder's iteration view rather than a test dataset or test case.
Studio has no Production/Dev toggle. Its Test runs window lists your own Dev runs. Outside Studio, the Executions tab and the Overview's Cost card each have a Production / Dev switch, and only editors can pick Dev; the rest of the agent's metrics read Production only. Production and Dev also have separate spend limits.
The layout
- Header — the agent's name, the save status (Saving…, All changes saved), the version picker, Discard changes, and Deploy.
- Wiring strip — under the header: the agent's model and how many triggers, channels, participants, and contacts reach it.
- Agent configuration — the form in the middle. This is the agent.
- Tool windows — panels around the form, opened from the icon rails: Test chat (right), Integration Configuration (left), and Test runs (bottom). Right-click an icon to move its window to another side.
The agent form
The form has six groups. Instructions and Model & capabilities start open; the others show how many of their settings are on while closed.
Instructions
| Setting | Purpose |
|---|---|
| Parameters | The typed inputs the agent accepts, filled by the test panel, API calls, or triggers. Each has a name, a type (STRING, INTEGER, FLOAT, BOOLEAN, OPTION, JSON, STRING_ARRAY, DICTIONARY, and others), whether it's required, a default, and a description that shows in the API schema. Keep them lean: a focused agent has 1–4 well-named parameters. |
| System Prompt | Sets behavior, constraints, persona, output format. |
| Reply style | How your team writes, learned from its chats. It has its own versions and is not saved or deployed with the agent. |
| Input Prompt | The per-run message, typically built from placeholders against the parameters. |
Model & capabilities
| Setting | Purpose |
|---|---|
| LLM Config and Model | Pick a published, tenant-scoped LLM config (provider + credentials) and a model. See LLM Providers. The agent records a reference, not a snapshot: updating the config rolls into the agent on the next run. |
| Fallback providers | Where the call goes when the provider above won't answer. |
| Model parameters | Temperature, top-p, max tokens, reasoning mode, and the other knobs the model supports. They override the picked config for this agent only, and show in the trace. |
| Tools | What the agent can call. Click Add tool to browse tools by integration. See Tools & Skills. |
| Skills | Activatable capability bundles. Click Add skill. |
| Natural silence | Skip a reply when the conversation needs none. |
| Relevance check | The cheap model gate that decides whether to answer an unaddressed group message. |
| Knowledge | The knowledge bases and assets the agent can search and read. An agent with no knowledge has no retrieval cost. See Assets. |
| Secrets this agent can use | The secrets the agent may substitute into tool-call arguments. See Secrets. |
Memory & context
| Setting | Purpose |
|---|---|
| Session & context | Conversation history between turns — see Sessions. |
| Memory | Facts the agent saves and recalls across conversations — see Memory. |
| Max tool loops | Cap on tool-call iterations per run (1–100, default 25). Raise for complex tasks; lower to bound runaway loops. |
Collaboration
| Setting | Purpose |
|---|---|
| Escalate to human | Hand the conversation to a person when the agent can't finish it. |
| Contacts | The people the agent reaches to notify, ask, consult, or approve. |
Execution
| Setting | Purpose |
|---|---|
| Prefetch | Lookups that run before the model's first call, so it starts with the answer. |
| Parallel sub-tasks | Let the agent fan out copies of itself to work on parts of a task at the same time. |
| Async execution | Whether the agent waits for slow tools, sends them to the background, or decides per call. |
Output & quality
| Setting | Purpose |
|---|---|
| Output format | Free text, JSON object, or JSON schema. JSON output is passed on as structured data, so callers get a stable shape. |
| Judge / Quality check | Inline LLM-as-judge with optional retry-with-feedback. See Inline Judge. |
Human approval
Approval is set per tool. Expand a tool's card in Tools and open Human in the loop to pick the approver, the message they see, and when the request expires. The run pauses before the tool runs until a person approves the call. See Human approval.
Connecting a tool to credentials
Every tool that calls an external service needs an integration connection (a tenant-level config carrying the credential, sandbox routing, and OAuth scopes). You wire credentials by picking a connection, not by pasting auth into the agent:
- Configure once at the tenant level. In Integrations, set up one or more configs for each integration. Each is a card with its own name, credentials, granted OAuth scopes, and
sandboxModestrategy. The same integration can have multiple configs (e.g., "Salesforce — Prod", "Salesforce — Sandbox"). - Pick the connection for the agent. The first time you add a tool from an integration, its card asks you to Set default credentials. The config you pick applies to every tool from that integration in this agent. You can also pick it in the Integration Configuration window, which lists every integration the agent's tools need and whether it's Connected or Needs setup. When only one config exists, it's picked for you.
- Override per tool when needed. Click Override on a tool's card to give that one tool a different config — useful when a read-only tool should use a sandbox config while the rest of the agent uses prod.
The picker shows each config with its sandbox status and OAuth scope summary, so it's clear which environment a tool is actually talking to before you deploy.
Placeholders
Placeholders are how data reaches the prompts. Anywhere a template is accepted, you can reference:
{{param.<name>}} # a parameter
{{sender.<field>}} # the person who sent the message
{{venue.<field>}} # the conversation the message came from: the group, or the sender in a DM
{{secret.<NAME>}} # an organization secret, in tool arguments
<file:…> # an attached asset (inserted from the asset picker)You insert these from the prompt editor's placeholder menu rather than hand-typing them, so names always resolve. Placeholders that don't resolve render as empty strings — a common silent bug — so always check the trace if the agent is producing weird output.
Saving & versions
Studio saves as you type. Your edits go into a draft on the server, and the header shows All changes saved once they've landed. Production traffic keeps hitting the deployed version; editing never changes what's live.
To ship, click Deploy. If the draft has changes, the dialog first asks Why this change? and saves the draft as a new version (an immutable revision). It then runs Pre-deploy checks and makes that version live. Discard changes drops the draft and returns the form to the version it started from.
The version picker in the header (Version N, with a LIVE tag on the deployed one) switches between versions and compares them.
Testing from Studio
Test chat runs what the form is showing: your draft, before you deploy it. To test a published version instead, pick it under Run settings → Runs. Each run's full trace lands in Test runs. See Testing for the full guide.
Agents and workflows
An agent is one definition. It doesn't have nodes, steps, or a canvas. When a job needs several agents and tools run in a set order, build a workflow instead. A workflow is a graph, built on a canvas in the workflow builder, and each of its Agent steps runs an existing agent.
Next steps
- Creating Agents — full walkthrough of a new agent
- Tools & Skills — what agents can do
- AI Providers — wiring up the LLM
- Testing — interactive validation