Runstack Studio
Build visual agent workflows, publish to the marketplace, and invoke agents in chat with slash commands.
Source: https://runstack.engineer/docs/studio
Runstack Studio is where you design, test, and publish agents — reusable AI personas with a description (role), a visual workflow of tool steps and conditions, and optional marketplace visibility. Open Studio from the workspace sidebar to manage your agents or browse the marketplace.
Agents are workspace-scoped — each workspace has its own drafts and published agents.
Studio home
The Studio landing page has two panels:
| Panel | What you see |
|---|---|
| My Agents | Drafts and published agents you own in the active workspace. Click Update to edit a draft, or Make a copy on a published agent. |
| Marketplace Agents | All published agents globally. Search by name, role, or category, then open an agent to Explore its workflow (read-only). |
Use the search bar (Search agents...) to filter by name, role, or category.
Click New Agent to open the agent builder. If you have an unsaved draft from a previous session, Studio offers to Continue or Discard and start fresh.
Agent cards
Each card shows:
- Name and version badge (e.g.
v1.0) - Published or Draft status (your agents only)
- Toolkit logos from connected tools (first three)
- Agent id with copy button — use when scoping
@rnsk/toolsor@rnsk/bot - Update (your agents) or Explore (marketplace)
What is an agent?
| Field | Description |
|---|---|
| Name | Display name. Also determines the /command — e.g. GitHub Helper becomes /githubHelper |
Description (role) | System prompt that defines the agent's persona and behavior at runtime |
Category (tag) | Marketplace filter from the category list below |
| Workflow | Ordered tool steps and optional condition branches — built in Form or on the canvas |
| Version | Bumps on content edits (v1.0 → v2.0 → …) |
| Published | When on, the agent appears in the marketplace and is callable via /command |
| Id | Stable identifier on each agent card — copy it for SDK scoping (see below) |
Categories
Office work, Sales, Marketing, Product & design, Customer support, Engineering, HR & recruiting, Finance & ops, E-commerce, Content & media, IT & security, Data & analytics, Legal & compliance, Education & training, Social media, Travel & events, Real estate, Healthcare & wellness, Nonprofit, Procurement & vendors, Events & conferences
Building an agent
The agent editor has two synchronized views. Click Back to Studio to return to the home page.
Form tab
Build steps in a nested tree:
- Tool steps — pick a toolkit and a tool for each step
- Conditions — branch logic with three variants:
- Condition — single condition path
- Condition Branch — if / else
- Multi Condition — multiple if branches
Each condition branch has a Condition label, Prompt (e.g. if user confirms the action), and its own tool steps. Step numbers in the form (e.g. 1, 2.1) match what the Studio assistant references when editing via chat.
Workflow tab
The same workflow on a visual canvas — drag toolkits from the sidebar, connect steps, and add condition nodes. Changes sync instantly with the Form tab.
Studio assistant
On the Form tab, the chat panel on the right is a Studio assistant that can read and modify your draft workflow. Ask it to add tools, wire conditions, or update metadata — for example:
Add a GitHub step to fetch the latest PR, then a condition to review only if there are changes.
The assistant uses studio tools to update the draft in place:
| Tool | Purpose |
|---|---|
readAgentConfig | Read metadata and numbered steps |
updateAgentMetadata | Update name, description, category |
addToolStep / updateToolStep / removeStep | Manage tool steps |
addCondition / updateCondition / addToolToBranch | Manage condition branches |
searchTool | Search the tool registry |
Chat edits are not saved automatically — click Save draft or Publish when you are ready. Draft chat history persists across sessions until you save, publish, or discard the draft.
Save and publish
- Add at least one complete tool step (toolkit + tool selected)
- Click Save draft or Publish
- Fill in Name, Category, and Description in the dialog
- Confirm — drafts stay private; published agents appear in the marketplace
| Action | Available when |
|---|---|
| Save draft | Draft with unsaved changes |
| Publish | Draft ready to go live |
| Discard | Draft with unsaved changes |
| Delete | Any agent you own |
| Make a copy | Published agent (creates a new draft) |
Published agents are read-only. To change a published agent, use Make a copy to create a new draft, edit it, and publish again.
The /command system
Every published agent gets a slash command derived from its name in camelCase. Duplicate names get a numeric suffix (name2, name3).
| Agent name | Slash command |
|---|---|
GitHub Helper | /githubHelper |
Notion Writer | /notionWriter |
PR Reviewer | /prReviewer |
Send Email | /sendEmail |
Type / in any workspace chat to see published agents in the active workspace. Selecting one applies the agent's description and workflow to that message.
> /prReviewer Review the latest PR in my-org/my-repo
The model uses the agent's description as its system prompt and follows the workflow's tool steps and conditions.
Designing good agents
Description (role)
Write a specific instruction set — this is the runtime system prompt:
You are a GitHub PR reviewer. When given a repository and PR reference:
1. Fetch the PR diff and changed files using the workflow tools
2. Review for correctness, security issues, naming conventions, and test coverage
3. Return a structured review with LGTM / Needs Changes verdict
Always be concise and actionable.
Workflow
Use tool steps to guide execution order. Add conditions when behavior should branch — for example, only post a review comment when the PR is open:
| Step | Type | Detail |
|---|---|---|
| 1 | Tool | GitHub → github_get_pull_request |
| 2 | Condition | Branch — if PR has changes / else skip |
| 2.1 | Tool | GitHub → github_list_pr_files |
| 3 | Tool | GitHub → github_add_pr_review |
Workflow steps are guidance for the agent loop, not a rigid script — the model can still use meta tools to discover additional tools when needed.
Using agents in your app
Published agents can run outside workspace chat via @rnsk/tools or @rnsk/bot. Copy the agent id from the agent card in Studio (monospace string with copy button).
Scope tools to an agent
Pass agentIds to limit search_tools discovery to the toolkits in that agent's workflow:
await generateText({
model: "anthropic/claude-sonnet-4-5",
prompt: "Review the latest PR in my-org/my-repo",
tools: runstackTools(process.env.RUNSTACK_API_KEY!, {
agentIds: "paste-agent-id-here",
}),
})
Multiple agents (union of their workflow toolkits):
tools: runstackTools(process.env.RUNSTACK_API_KEY!, {
agentIds: ["agent-id-1", "agent-id-2"],
})
Use the agent's role as system prompt
Fetch the agent config and pass its role to your model:
const agent = await fetchRunstackAgent("paste-agent-id-here", process.env.RUNSTACK_API_KEY!)
const tools = runstackTools(process.env.RUNSTACK_API_KEY!, { agentIds: agent.id })
await generateText({
model: "anthropic/claude-sonnet-4-5",
system: buildAgentSystemPrompt(agent),
prompt: "Review the latest PR in my-org/my-repo",
tools,
})
Draft agents are accessible with your API key when they belong to the workspace bound to the key. Published marketplace agents are accessible by id without extra setup.
Marketplace and embedding
- Marketplace — browse published agents from Studio home; open any card to explore its workflow
- Chat — invoke published agents with
/commandin the workspace @rnsk/bot— bind a published Studio agent in your React app (docs)
Using agents via MCP and @rnsk/tools
Scope MCP tool discovery to a Studio agent with agentIds in @rnsk/tools. The SDK sends your agent id to Runstack and limits search_tools to that agent's workflow toolkits. Fetch the agent role with fetchRunstackAgent() and pass it as your system prompt.
fetchRunstackAgent → buildAgentSystemPrompt → runstackTools({ agentIds })
search_tools → check_authentication → execute_tool