Seshat AIDocumentation

Documentation / Reference

ClientConfig reference

Every field of sdk.ClientConfig, grouped by theme, with its type, its default and what it does.

sdk.ClientConfig is the configuration of a Go client. Start from sdk.DefaultClientConfig() and change what you need: see Go SDK for a first example and Integrating in your product for a server.

In the Default column, a dash means the zero value: nothing is set, or the feature is off. “From DefaultClientConfig()” means the value is set by that function and not by ClientConfig itself. Fields marked Go only cannot be written in a JSON file (they are functions, interfaces or pointers).

Model and provider

FieldTypeDefaultEffect
APIKeystringnoneThe provider key. A CredentialResolver wins over it
ModelModelIdentifierAnthropic claude-sonnet-5-5, from DefaultClientConfig()The model of the session: {Provider, Model}
TitleModelModelIdentifiernoneA model for the automatic session titles. Both Provider and Model must be set
CompactSummaryModelModelIdentifierthe session modelThe model that writes compaction summaries. See Memory and compaction
CredentialResolverCredentialResolvernoneCalled when the client is created to find the key of the provider. Wins over APIKey. Use it on a server, with one key per user. Go only
ProviderConfig*providers.ConfignoneProvider options such as a base URL, headers or model aliases. Go only. See Providers and authentication
TitleProviderConfig*providers.ConfignoneA provider client used only for the titles, for example a small local model. Go only
TitleGeneratorTitleGeneratornoneYour own title generator. Wins over TitleProviderConfig and TitleModel. Go only
LocalTitle*LocalTitleConfignoneSettings of the default local title generator. Ignored when TitleGenerator is set
DisableTitleGenerationboolfalseTurn the automatic titles off
OnSessionTitledfunc(id SessionID, title string)noneCalled once, after the first completed turn, when a title has been written. Use it to refresh your interface. Go only

Limits of a request

FieldTypeDefaultEffect
MaxTurnsint100, from DefaultClientConfig()Limit on turns per request
MaxIterationsint100 when left at zeroLimit on rounds of model calls per request
MaxTokensint8192, from DefaultClientConfig()The most the model may write in one call
TurnTokenBudgetint0, offWhen above zero, turns on the token budget: the loop may continue while the budget allows it
BudgetContinuationLimitint3 when left at zeroHow many budget continuations one request may use
ContinuationNudgeLimitint3 when left at zeroHow many times the loop pushes a model that announces a next step and stops
TaskNudgeLimitint3 when left at zeroHow many reminders about open tasks one turn sends. A negative value turns them off
MaxConsecutiveDenialsint3 when left at zeroBack-to-back permission denials that trigger the orchestrator’s fallback

See One runtime, one loop for what each limit does.

Permissions and the prompt

FieldTypeDefaultEffect
PermissionModePermissionModePermissionModeOnRequest, from DefaultClientConfig()Who approves the actions of the agent. See Runtime modes
PromptFnPromptFnnoneCalled when the agent asks you a question or needs an approval. Without it, an action that needs approval is not approved. Go only
EnablePromptReaderFallbackboolfalseWhen there is no PromptFn, lets the question tool read the answer from the standard input
TrustProjectInstructionsfunc(path string, content []byte) boolnoneDecides whether SESHAT.md, AGENTS.md and .seshat/instructions.md of WorkingDir may reach the model. Left empty, none is read. Go only. See Prompt
ManagedPolicy*ManagedPolicynoneWhat an organization imposes on every agent: a text to follow and tools never to use. Set it from an administrator’s configuration, not from the end user’s. Go only

Sessions and storage

FieldTypeDefaultEffect
PersistSessionsbooltrue, from DefaultClientConfig()Save conversations
SessionStorageDirstringthe runtime folder, from DefaultClientConfig()Where session files are kept
SessionSQLitePathstringnoneThe SQLite file where tasks and goals are stored
SessionBackend, SessionStoreinterfacesnoneYour own storage for sessions, to keep them in your database. Go only
UserIDstringnoneWho the caller is, passed to PlanStore so that plans are saved against the right user. Never sent anywhere else. Go only
StorageConfig*StorageConfignoneWhere files made by the agent are kept: local folder or S3. Go only
ArtifactStoreArtifactStorenoneYour own store for those files. Go only
StorageGCEnabledbooltrue, from DefaultClientConfig()Clean up expired artifacts
StorageGCIntervaltime.Durationone hour, from DefaultClientConfig()How often the cleanup runs
StorageGCLimitint512, from DefaultClientConfig()How many items one cleanup handles
StorageGCNamespaces[]stringempty, from DefaultClientConfig()Which artifact namespaces the cleanup covers

Memory and compaction

FieldTypeDefaultEffect
AutoCompactbooltrue, from DefaultClientConfig()Compact the context when it gets full
EnableMemorybooltrue, from DefaultClientConfig()Long-term notes across sessions
MemoryFailFastboolfalseIf the memory service cannot start, fail instead of going on without memory (a line is logged)
LongTermMemoryLongTermMemorynoneYour own long-term memory. Go only
PlanStorePlanStorenoneWhere submit_plan saves plans. Without it, submit_plan is not available. Go only

Working folder, browser and sandbox

FieldTypeDefaultEffect
WorkingDirstringthe current folderThe folder the agent works in
BrowserRemoteControlURLstringnoneAttach the browser tools to a browser that is already running
BrowserExecutablePathstringnoneWhich browser program to start
BrowserSessionTargetResolverfunc(ctx, SessionID) (string, bool)noneLets a desktop app attach a session’s browser calls to a tab it already shows to the user. Go only
RequireSandboxboolfalseThe bash tool refuses to run when no OS-level sandbox is available
SandboxKindSandboxKindSandboxKindLocalSandboxKindLocal or SandboxKindDocker
SandboxDockerSandboxDockerConfigsecure defaultsSettings of the Docker sandbox. Go only

See Integrating in your product for the choice between the two sandboxes.

Tools and connected services

FieldTypeDefaultEffect
MCPServers[]MCPServerConfignoneMCP servers to connect. See Skills and MCP
MainAgentTools[]stringnoneWhen not empty, limits the tools the main agent sees to exactly these names (a host’s general-purpose agent with a short, curated list). Sub-agents started through the agent tools are not limited by it. Empty offers every enabled tool
EnableToolSearchboolfalseKeep deferred tools (MCP tools, for example) out of the first tool list: the model finds them with tool_search. The environment variable ENABLE_TOOL_SEARCH can also turn it on
RAGService*RAGServicenoneThe knowledge service behind the RAG tools. Go only
DocumentReaderURLstringnoneThe address of a document-reader service, used to build the default converter
DocumentConverterdocumentreader.Converterbuilt from DocumentReaderURLYour own converter behind the document tools. Wins over DocumentReaderURL. Go only
DocumentPageRendererpdfsmart.PageRenderernoneBacks render_document_page, so the agent can look at a page with a multimodal model. Go only
AutomationServiceURLstringnoneThe address of the automation daemon. The scheduling tools work only with it
AutomationAPIKeystringnoneIts key. Go only
WebSearchKeysmap[string]stringnoneKeys of the web search providers (tavily, exa, jina, langsearch) for this client only. They replace the environment, so a shared server does not leak keys between sessions. Go only
ResearchKeysmap[string]stringnoneThe same for the research tools: reddit_client_id, reddit_client_secret, youtube_api_key, google_places_api_key, trustpilot_api_key. A research tool without its keys is not offered to the model. Go only
ImageGeneration, TextToSpeech, SpeechToTextconfig pointersnoneThe providers behind the multimodal tools. Without one, the tool is not offered

Prompt and behaviour

FieldTypeDefaultEffect
SystemPromptTemplatestringnoneA text that fully replaces the default system prompt
PromptConfig*PromptConfignoneReplace or extend the prompt, set the stage, add tool hints. See Prompt. Go only
Companion*companion.ProfilenoneA persona added to the system prompt. Go only

Hooks, callbacks and observability

FieldTypeDefaultEffect
EnableHooksbooltrue, from DefaultClientConfig()Run lifecycle hooks
PreToolHooks[]PreToolHookConfignoneShell commands run before each tool call. See Streaming, events and hooks. Go only
StopHooks[]StopHooknoneRun when the model is about to stop, and may ask for one more cycle. Go only
ProgressFnfunc(ToolProgress)noneProgress of tool calls. Go only
ResponseChunkFnfunc(ResponseChunk)noneEach piece of the answer as it arrives. Go only
RuntimeEventFnfunc(RuntimeEvent)noneStructured events for the whole turn. Go only
EnableMonitoringbooltrue, from DefaultClientConfig()Turn the monitoring system on
Monitoring*MonitoringSystembuilt by the clientYour own monitoring system. Go only

Next

Updated on 2026-10-13