Docs · static mirror — the interactive version loads with JavaScript.

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:

PanelWhat you see
My AgentsDrafts and published agents you own in the active workspace. Click Update to edit a draft, or Make a copy on a published agent.
Marketplace AgentsAll 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/tools or @rnsk/bot
  • Update (your agents) or Explore (marketplace)

What is an agent?

FieldDescription
NameDisplay 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
WorkflowOrdered tool steps and optional condition branches — built in Form or on the canvas
VersionBumps on content edits (v1.0 → v2.0 → …)
PublishedWhen on, the agent appears in the marketplace and is callable via /command
IdStable 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:

ToolPurpose
readAgentConfigRead metadata and numbered steps
updateAgentMetadataUpdate name, description, category
addToolStep / updateToolStep / removeStepManage tool steps
addCondition / updateCondition / addToolToBranchManage condition branches
searchToolSearch 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

  1. Add at least one complete tool step (toolkit + tool selected)
  2. Click Save draft or Publish
  3. Fill in Name, Category, and Description in the dialog
  4. Confirm — drafts stay private; published agents appear in the marketplace
ActionAvailable when
Save draftDraft with unsaved changes
PublishDraft ready to go live
DiscardDraft with unsaved changes
DeleteAny agent you own
Make a copyPublished 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 nameSlash 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:

StepTypeDetail
1ToolGitHub → github_get_pull_request
2ConditionBranch — if PR has changes / else skip
2.1ToolGitHub → github_list_pr_files
3ToolGitHub → 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 /command in 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