server:host:"127.0.0.1"port:8200transport:sseapi_keys:-"your-secret-key"claude:binary:claudetimeout:3600# default_profile removed — use AGENTIHOOKS_PROFILE env varconfig_dir:""repos:root:~/agenticore-reposmax_parallel_jobs:3job_ttl_seconds:86400# Kubernetes / shared FS (optional):shared_fs_root:""jobs_dir:""pod_name:""worktree_root:""# /app/worktrees in Kubernetes (emptyDir)redis:url:"redis://localhost:6379/0"key_prefix:agenticoreotel:enabled:trueendpoint:"http://otel-collector:4317"protocol:grpclog_prompts:falselog_tool_details:truegithub:token:""langfuse:host:"https://cloud.langfuse.com"public_key:""secret_key:""agentihooks_path:""agentihooks_url:""agentihooks_sync_interval:300agentihooks_bundle_url:""agentihooks_bundle_sync_interval:300agentihub_url:""agentihub_path:""agentihub_sync_interval:300
Environment Variables
Server
Variable
YAML Key
Default
Description
AGENTICORE_HOST
server.host
127.0.0.1
Bind address
AGENTICORE_PORT
server.port
8200
Listen port
AGENTICORE_TRANSPORT
server.transport
sse
Transport mode (sse or stdio)
AGENTICORE_API_KEYS
server.api_keys
(none)
Comma-separated API keys for auth
Claude
Variable
YAML Key
Default
Description
AGENTICORE_CLAUDE_BINARY
claude.binary
claude
Path to Claude CLI binary
AGENTICORE_CLAUDE_TIMEOUT
claude.timeout
3600
Max seconds per job
AGENTIHOOKS_PROFILE
agentihooks_profile
coding
Active execution profile (set by agentihooks)
AGENTICORE_CLAUDE_CONFIG_DIR
claude.config_dir
(none)
DEPRECATED — Claude Code uses ~/.claude/ by default
CLAUDE_CODE_HOME_DIR
claude.claude_home_dir
$HOME
Safeguard: home dir root — Claude uses $CLAUDE_CODE_HOME_DIR/.claude/
Repos
Variable
YAML Key
Default
Description
AGENTICORE_REPOS_ROOT
repos.root
~/agenticore-repos
Root directory for cloned repos
AGENTICORE_MAX_PARALLEL_JOBS
repos.max_parallel_jobs
3
Max concurrent jobs
AGENTICORE_JOB_TTL
repos.job_ttl_seconds
86400
Job TTL in seconds (24h default)
AGENTICORE_SHARED_FS_ROOT
repos.shared_fs_root
(none)
Shared RWX filesystem root (Kubernetes). When set, enables K8s mode: profiles are materialised to /shared/jobs/{job-id}/ instead of the repo working dir.
AGENTICORE_JOBS_DIR
repos.jobs_dir
~/.agenticore/jobs
Override job JSON file directory. In K8s use /shared/job-state.
AGENTICORE_POD_NAME
repos.pod_name
hostname
Pod identity recorded on each job. Set from K8s Downward API (metadata.name).
AGENTICORE_WORKTREE_ROOT
repos.worktree_root
~/.agenticore/worktrees
Root directory for bespoke worktrees. In Kubernetes, use an emptyDir mount (e.g. /app/worktrees). Worktrees are ephemeral and live on local disk, NOT shared FS.
Redis
Variable
YAML Key
Default
Description
REDIS_URL
redis.url
(none)
Redis connection URL
REDIS_KEY_PREFIX
redis.key_prefix
agenticore
Key namespace prefix
OTEL
Variable
YAML Key
Default
Description
AGENTICORE_OTEL_ENABLED
otel.enabled
true
Enable OTEL telemetry
OTEL_EXPORTER_OTLP_ENDPOINT
otel.endpoint
http://otel-collector:4317
OTLP collector endpoint
OTEL_EXPORTER_OTLP_PROTOCOL
otel.protocol
grpc
OTLP protocol (grpc or http)
AGENTICORE_OTEL_LOG_PROMPTS
otel.log_prompts
false
Log user prompts in telemetry
AGENTICORE_OTEL_LOG_TOOL_DETAILS
otel.log_tool_details
true
Log tool call details
Anthropic
Variable
YAML Key
Default
Description
CLAUDE_CODE_OAUTH_TOKEN
(env only)
(none)
Long-lived OAuth token for direct Anthropic auth. When set, ANTHROPIC_AUTH_TOKEN and ANTHROPIC_BASE_URL are removed from the job env.
ANTHROPIC_AUTH_TOKEN
(env only)
(none)
Static API key (fallback when CLAUDE_CODE_OAUTH_TOKEN is not set)
ANTHROPIC_BASE_URL
(env only)
(none)
Custom API endpoint (e.g. LiteLLM proxy)
GitHub
Variable
YAML Key
Default
Description
GITHUB_TOKEN
github.token
(none)
GitHub PAT for auto-PR + private repo access
GITHUB_APP_ID
github.app_id
(none)
GitHub App numeric ID
GITHUB_APP_INSTALLATION_ID
github.app_installation_id
(none)
GitHub App installation ID
GITHUB_APP_PRIVATE_KEY_PATH
(env only)
(none)
Path to GitHub App PEM key file
GITHUB_APP_PRIVATE_KEY
(env only)
(none)
Raw PEM text (K8s --from-file secrets)
GITHUB_APP_PRIVATE_KEY_BASE64
(env only)
(none)
Base64-encoded PEM key
Langfuse
Variable
YAML Key
Default
Description
LANGFUSE_HOST
langfuse.host
https://cloud.langfuse.com
Langfuse API host
LANGFUSE_PUBLIC_KEY
langfuse.public_key
(none)
Enables Langfuse SDK tracing
LANGFUSE_SECRET_KEY
langfuse.secret_key
(none)
Langfuse SDK authentication
LANGFUSE_BASIC_AUTH
(env only)
(none)
Base64(public_key:secret_key) for OTEL collector
Agentihooks
agentihooks is a PyPI dependency of agenticore.pip install agenticore pulls it transitively, so no configuration is required for the default install path. The variables below are override escape hatches for development against a live checkout or a non-PyPI fork/branch.
Variable
YAML Key
Default
Description
AGENTICORE_AGENTIHOOKS_PATH
agentihooks_path
(none)
Dev loopback: uv pip install -e <path> over the PyPI version. Wins over URL.
AGENTICORE_AGENTIHOOKS_URL
agentihooks_url
(none)
Bleeding-edge override: clone ONCE at boot, uv pip install -e. No periodic re-sync.
AGENTICORE_AGENTIHOOKS_BRANCH
agentihooks_branch
(empty)
Git ref checked out when URL is set.
AGENTICORE_AGENTIHOOKS_SYNC_INTERVAL
agentihooks_sync_interval
300
DEPRECATED — no-op. agentihooks is a versioned pip package; restart the pod to upgrade.
AGENTICORE_AGENTIHOOKS_BUNDLE_URL
agentihooks_bundle_url
(none)
Git URL for the bundle content repo. Passed as --bundle to agentihooks init.
AGENTICORE_AGENTIHOOKS_BUNDLE_SYNC_INTERVAL
agentihooks_bundle_sync_interval
300
Bundle hot-reload interval in seconds. 0 disables.
AGENTIHOOKS_PROFILE
(env only)
coding
Profile name passed to agentihooks init --profile.
Agentihub
Variable
YAML Key
Default
Description
AGENTICORE_AGENTIHUB_URL
agentihub_url
(none)
Git URL for the agentihub repo (agent packages). Used in agent mode.
AGENTICORE_AGENTIHUB_PATH
agentihub_path
(none)
Explicit path override. Skips cloning.
AGENTICORE_AGENTIHUB_SYNC_INTERVAL
agentihub_sync_interval
300
Agentihub hot-reload interval in seconds. 0 disables.
AGENTIHUB_AGENT
(env only)
(none)
Agent name to load (matches agents/{name}/ directory).
Repository Sync
agentihooks itself is a pip dependency — it is NOT cloned. The two content repos (bundle and agentihub) are cloned at startup and kept up-to-date via background watcher threads. Each content repo has a URL (triggers cloning), a PATH override (skips cloning), and a SYNC_INTERVAL (controls hot-reload frequency).
The two content repos (bundle + agentihub) use a daemon thread that periodically runs git fetch --all && git reset --hard origin/HEAD. Each has an independent interval defaulting to 300 seconds. Set any *_SYNC_INTERVAL to 0 to disable its watcher. agentihooks itself has no watcher — it is a PyPI dependency, so a pod restart is the upgrade path.
Repo
Watcher thread
Interval variable
Default
agentihooks
(none — PyPI dep, restart to upgrade)
AGENTICORE_AGENTIHOOKS_SYNC_INTERVAL
deprecated no-op
agentihooks-bundle
agentihooks-bundle-watcher
AGENTICORE_AGENTIHOOKS_BUNDLE_SYNC_INTERVAL
300s
agentihub
agentihub-watcher
AGENTICORE_AGENTIHUB_SYNC_INTERVAL
300s
On-demand sync
In addition to the background watchers, you can trigger a sync manually:
REST API:
# Sync all repos
curl -X POST http://localhost:8200/admin/sync
# Sync a specific repo
curl -X POST "http://localhost:8200/admin/sync?target=agentihub"
Valid targets: all (default), agentihooks, bundle, agentihub.
CLI (from inside the container):
# Sync all repos
agenticore hooks sync# Sync a specific repo
agenticore hooks sync--target bundle
PATH vs URL
Setting a *_PATH variable tells agenticore to use that directory as-is — no cloning, no watcher, no git operations. This is useful for local development where you have the repos already checked out. When both *_PATH and *_URL are set, *_PATH takes precedence (agentihooks only; agentihub always clones when *_URL is set).