Skip to content

Quick Start

The fastest path is to run the published server image and use the hosted runtime first.

Terminal window
docker run -p 8080:8080 \
-v ./data:/data \
-e AGENTCIRCUITS__AUTH__PROVIDERS__0=LocalUserId \
-e AGENTCIRCUITS__AUTH__LOCALUSERID__ENABLED=true \
-e AGENTCIRCUITS__PORTAL__REQUIREAUTHENTICATION=true \
-e AGENTCIRCUITS__PROVIDERS__ANTHROPIC__API_KEY=sk-ant-... \
ghcr.io/agent-circuits/agentcircuits-server:latest

This gives you:

  • the portal at http://localhost:8080/portal
  • the chat UI at http://localhost:8080/chat
  • health checks at http://localhost:8080/health
  • file-backed storage mounted at ./data

The same runtime can be configured with environment variables:

Terminal window
AGENTCIRCUITS__STORAGE__MODE=Sql
AGENTCIRCUITS__STORAGE__CONNECTIONSTRING=Host=postgres;Database=agentcircuits
AGENTCIRCUITS__PORTAL__CLITOOLDIRS__0=/app/cli-tools
AGENTCIRCUITS__PORTAL__SKILLDIRS__0=/app/skills

For local SQL-backed development, the server repo also ships a compose profile that runs the platform against PostgreSQL.

You have three main extension paths:

  1. Mount CLI tool directories and point AgentCircuits:Portal:CliToolDirs at them.
  2. Attach MCP servers to agents through the platform.
  3. Build your own host and register services or tools in code.

Custom C# tools still use the runtime attributes shown in the samples:

[Tool("get_weather", "Get current weather for a city")]
public static async Task<ToolResult> GetWeather(
[ToolParam("City name")] string city,
IToolContext context)
{
await Task.Delay(100, context.CancellationToken);
return ToolResult.Success($"Weather for {city} is sunny.");
}

When the default container is not enough, move to a custom ASP.NET Core host:

AgentCircuits.Server.Program.Run(args, builder =>
{
builder.Services.AddSingleton<IMyService, MyService>();
});