Sign in

Build

Build agents your way.

Guild Agent SDK for TypeScript. CLI for scaffolding, testing, and deploying from your terminal. Start with production-ready starter agents and customize from there.

SDKCLIUIYour call

One platform. Three ways to build. Connect anything your agents need. Custom APIs and REST endpoints. Guild integrates into your stack, not the other way around.

SDK

Build production-ready agents in TypeScript
The SDK for TypeScript makes it easy to define reliable agents with strongly typed inputs and outputs using Zod schemas — from simple workflows to advanced orchestration.

CLI

Move fast from development to deployment
Create, test, and publish from your terminal. Three commands from idea to production.

UI

A live workspace for agent development
Build and configure agents in the Guild web editor. Edit code, test in real-time, publish when ready.

SDK

Build production-ready agents in TypeScript
The SDK for TypeScript makes it easy to define reliable agents with strongly typed inputs and outputs using Zod schemas — from simple workflows to advanced orchestration.

CLI

Move fast from development to deployment
Create, test, and publish from your terminal. Three commands from idea to production.

UI

A live workspace for agent development
Build and configure agents in the Guild web editor. Edit code, test in real-time, publish when ready.

Build agents.
Deploy with confidence.

Get started
Use typed tools, scoped integrations, declarative structure. No hardcoded API keys or credential management. The agent declares what it does. The control plane handles the rest.

import { agent } from "@guild-ai/sdk";
export default agent({
name: "root-cause",
triggers: ["github.issue.labeled"],
async run({ issue }) {
const cause = await trace(issue);
await issue.comment(cause.summary);
}
});
Three commands. Idea to production.
A complete toolkit for moving agents from prototype to deployment.
# Initialize a new agent
guild agent init --name ticket-triage --template LLM

Initialize

Set up your agent's foundation by defining its structure, inputs, and core behavior so it's ready to be extended and executed.

# Test it
guild agent test --ephemeral

Test

Run your agent in a controlled environment to validate behavior, catch issues early, and ensure it performs as expected before going live.

# Save and publish
guild agent save --message "Initial triage agent"
  --wait --publish

Save and Publish

Finalize your agent and make it available for use by saving your changes and publishing it to your environment.

Meet the Agent Starter Kit
Production-ready agents out of the box. Fork them,
customize them, make them yours.

Ticket Triage

Incoming support tickets automatically classified by urgency, routed to the right team, and enriched with context from your codebase.

/** An agent to de-duplicate incoming GitHub issues. */
import { guildTools, llmAgent, pick } from "@guildai/agents-sdk";
import { gitHubTools } from "@guildai-services/guildai~github";
import systemPrompt from "./system-prompt.md"
const description = `This agent determines if a newly reported GitHub
issue is a duplicate of another issue.`;
const github = llmAgent({
identifier: "issue-deduplicator",
description,
tools: {
...pick(gitHubTools, [
"github_list_repository_issues",
"github_list_issue_comments",
"github_get_issue",
"github_update_issue",
"github_create_issue_comment",
"github_add_issue_labels",
"github_search_issues",
]),
...guildTools,
},
systemPrompt,
});
export default github;

PR Code Review

Every pull request gets automated risk flagging — security vulnerabilities, breaking changes, performance regressions.

"use agent"
import { ExperimentalCodingTools as codingTools } from "@guildai-services/guildai~experimental-coding"
import { gitHubTools } from "@guildai-services/guildai~github"
import { type Task, agent, consoleTools, pick, userInterfaceTools } from "@guildai/agents-sdk"
import Mustache from "mustache"
import { z } from "zod"
const inputSchema = z.object({
action: z.string(),
pull_request: z.object({ number: z.number() }),
repository: z.object({ name: z.string() }),
organization: z.object({ login: z.string() }),
})
const tools = {
...codingTools,
...consoleTools,
...pick(userInterfaceTools, ["ui_notify"]),
github_pulls_get: gitHubTools["github_pulls_get"],
}
const description = `Expert code reviewer that analyzes pull requests
for security vulnerabilities, performance issues, and best practices.`
export default agent({
description,
inputSchema,
outputSchema: z.object({ type: z.literal("text"), text: z.string() }),
tools,
run,
})

Root Cause Analysis

When an incident fires, the agent traces it back through logs, recent deploys, and code changes — then surfaces the probable root cause.

import { guildTools, llmAgent, pick } from "@guildai/agents-sdk";
import { newrelicTools } from "@guildai-services/guildai~newrelic";
const systemPrompt = `You are a NewRelic logs expert. Your job is to
help users query, search, and analyze logs stored in NewRelic.
## Core Responsibilities
1. **Query Logs**: Search for specific log entries using NRQL
2. **Analyze Patterns**: Identify patterns, errors, and anomalies
3. **Time-based Analysis**: Query logs across different time ranges`;
const description = `Query and analyze logs from NewRelic using
natural language.`;
export default llmAgent({
description,
tools: {
...newrelicTools,
...pick(guildTools, ["guild_credentials_request"]),
},
systemPrompt,
});

Slack Bot

An always-on assistant in your Slack workspace — answers questions, files tickets, and looks up context from connected tools.

import {
type AgentResult, type Task, agent, callTools,
guildTools, output, pick,
} from "@guildai/agents-sdk";
import { slackTools } from "@guildai-services/guildai~slack";
import { z } from "zod";
const llmTools = {
...pick(slackTools, [
"slack_get_conversation_replies",
"slack_get_user_info",
"slack_get_message_permalink",
]),
...pick(guildTools, ["guild_credentials_request"]),
};
const tools = {
...llmTools,
...pick(slackTools, [
"slack_post_message",
"slack_add_reaction",
"slack_remove_reaction",
]),
};
const SYSTEM_PROMPT = `You are a helpful assistant integrated
into Slack via @mention.`;
export default agent({
description: `A general-purpose Slack assistant that responds
to @mentions. Handles questions, code lookups, and issue
management for Guild workspaces.`,
tools,
start: async (input, task) => {
const { channel, ts } = parseWebhookPayload(input.text);
return callTools([{
type: "tool-call",
toolName: "slack_add_reaction",
input: { channel, name: "space_invader", timestamp: ts },
}]);
},
});

Choose the right agent type

TYPEDIFFICULTYBEHAVIORCOSTBEST FOR
llmAgentEasyStochasticVariable CostOpen-ended tasks where reasoning + tool use is enough
Automatically Managed State AgentModerateDeterministicFixed CostPredictable, structured workflows you want governed by default
Self Managed State AgentChallengingDeterministicFixed CostComplex stateful logic where you need full control of the state machine

Questions?
Start here.

Every agent is a git-backed artifact. When you run guild agent save, your code is committed and synced with Guild. Each version gets a validation check before it can be published. You can list all versions with guild agent versions.

Yes. Every agent is git-backed, so every version is stored. You can view the full version history with guild agent versions, compare changes, and manually revert if needed.

Schedules (cron), webhooks, and event-based triggers from integrated services like GitHub, Jira, and Slack. You can also trigger agents manually via the CLI or API.

Not yet. Today, agents are built with the Guild Agent SDK in TypeScript. Support for deploying agents built with other frameworks is on the roadmap.

Each agent runs in an isolated TypeScript sandbox with only @guildai/agents-sdk and zod available. No filesystem access, no arbitrary network calls. The sandbox enforces deterministic behavior and prevents agents from accessing resources outside their declared scope.

Agents ready? Now deploy them.
Explore the full agent lifecycle.

One control plane.
Manage the complete agent lifecycle.

Get a working agent in minutes.
No credit card required.