Skip to content

Configuration Reference

Authoritative reference for openma’s configuration shapes. The TypeScript source of truth lives in packages/api-types; the in-repo human-readable schema doc is AGENTS.md.

interface AgentConfig {
id: string; // assigned by the platform
name: string;
model: string; // e.g. "claude-sonnet-4-6"
system: string; // system prompt
tools: ToolDefinition[];
skills?: string[]; // skill ids
environment_id?: string;
mcp_servers?: McpServerConfig[];
memory_store_id?: string;
harness?: string; // defaults to "default"
archived?: boolean;
version: number; // platform-bumped on every update
created_at: string;
updated_at: string;
}
type ToolDefinition =
| { type: 'agent_toolset_20260401' } // built-in toolset
| {
type: 'custom';
name: string;
description: string;
input_schema: JsonSchema;
execution:
| { type: 'http'; endpoint: string; method?: string }
| { type: 'sandbox'; command: string };
};
interface McpServerConfig {
name: string; // becomes the prefix: mcp_<name>_<tool>
url: string;
auth?:
| { type: 'none' }
| { type: 'bearer'; token: string }
| { type: 'vault'; vault_id: string };
}
interface EnvironmentConfig {
id: string;
name: string;
base_image: string; // e.g. "openma/sandbox-base:python-3.12"
packages: {
pip?: string[];
npm?: string[];
apt?: string[];
cargo?: string[];
gem?: string[];
go?: string[];
};
network?: {
allowlist?: string[]; // hostnames the sandbox may reach
denylist?: string[];
};
env?: Record<string, string>;
}
interface VaultConfig {
id: string;
name: string;
type: 'bearer' | 'oauth' | 'env';
hosts: string[]; // hostnames this vault is bound to
// Token material is write-only — never returned via the API
}
interface SkillMetadata {
id: string;
display_title: string;
description: string;
files: string[]; // R2 keys under t:{tenant}:skill:{id}/
built_in?: boolean; // true for shipped skills
}

The platform mounts the files at /home/user/.skills/{id}/ and injects:

You have a skill called "{display_title}". Read /home/user/.skills/{id}/SKILL.md for instructions.

into the system prompt.

interface MemoryStore {
id: string;
agent_id: string;
embedding_model: string; // defaults to platform setting
vector_index: string; // Vectorize index name
}
interface SessionMeta {
id: string;
agent_id: string;
agent_version: number; // pinned at creation
status: 'pending' | 'running' | 'idle' | 'done' | 'failed';
created_at: string;
updated_at: string;
}
interface SessionEvent {
id: string;
session_id: string;
type: string; // 'message_start', 'tool_use', 'tool_result', etc.
data: unknown;
created_at: string;
}

The full event type catalog is in packages/api-types/src/events.ts.

Required for self-host. Set as Worker secrets via npx wrangler secret put NAME.

VariableWorkerPurpose
ANTHROPIC_API_KEYmain, agentLLM provider (or use OPENAI_API_KEY / MINIMAX_API_KEY)
BETTER_AUTH_SECRETmainbetter-auth session signing key
API_KEYmainInitial dev API key for the REST API
INTEGRATIONS_INTERNAL_SECRETmain, integrationsShared secret between main and integrations workers
MCP_SIGNING_KEYintegrationsSigns outbound MCP tokens
VariableWorkerPurpose
LINEAR_CLIENT_IDintegrationsLinear OAuth
LINEAR_CLIENT_SECRETintegrationsLinear OAuth
LINEAR_WEBHOOK_SECRETintegrationsVerify inbound Linear webhooks
GITHUB_APP_IDintegrationsGitHub App ID
GITHUB_PRIVATE_KEYintegrationsGitHub App private key (.pem contents)
GITHUB_WEBHOOK_SECRETintegrationsVerify inbound GitHub webhooks
SLACK_CLIENT_IDintegrationsSlack OAuth
SLACK_CLIENT_SECRETintegrationsSlack OAuth
SLACK_SIGNING_SECRETintegrationsVerify inbound Slack events
GOOGLE_CLIENT_IDmainGoogle sign-in for Console
GOOGLE_CLIENT_SECRETmainGoogle sign-in for Console
VariableWorkerPurpose
TAVILY_API_KEYmain, agentWeb search backend for web_search built-in
CLOUDFLARE_API_TOKENmainProgrammatic CF resource management (optional)
CLOUDFLARE_ACCOUNT_IDmainProgrammatic CF resource management (optional)
INTEGRATIONS_PUBLIC_URLmainOverride auto-detected integrations URL
PER_TENANT_DB_ENABLEDmainSet "true" to enable per-tenant D1 isolation
STORE_BACKENDSmainJSON config for storage backends (advanced)
DATABASE_URLmainExternal Postgres URL (advanced)

What each Worker needs in its wrangler.jsonc:

BindingTypeName
AUTH_DBD1openma-auth
CONFIG_KVKV(your namespace)
FILES_BUCKETR2managed-agents-files
AIWorkers AI(built-in)
VECTORIZEVectorizeopenma-memory
SANDBOX_sandbox_defaultService→ agent worker
INTEGRATIONSService→ integrations worker
SEND_EMAILEmail(your sender)
ANALYTICSAnalytics Engineoma_events
BindingTypeName
SESSION_DODurable ObjectSessionDO
SANDBOXDurable ObjectSandbox (Container class)
CONFIG_KVKV(shared with main)
AUTH_DBD1(shared with main)
WORKSPACE_BUCKETR2managed-agents-workspace
FILES_BUCKETR2(shared with main)
AI, VECTORIZE, BROWSER, ANALYTICS(same as main)
BindingTypeName
AUTH_DBD1(shared with main)
MAINService→ main worker