Skip to content

Copier variables

Every question the template asks at copier copy and copier update time, grouped the way copier.yml groups them. Answers are recorded in the actor’s .copier-answers.yml — copier update reuses them, so a default recorded once never re-derives on later updates (the exception is resource_profile: auto, which re-resolves at render time). Pass answers non-interactively with --data key=value; take every default with --defaults.

There is no actor_id variable — the marketplace UUID is assigned by the platform at registration/publish time, not by the template.

Template settings (private keys — never asked)

Section titled “Template settings (private keys — never asked)”
Key Value
_min_copier_version 9.4.0
_subdirectory template
_templates_suffix .jinja
_exclude SCHEMA_README.md
_message_after_copy Generated {{ project_name }}. Publishing this actor to GitHub is what puts it in the fleet. From your kaboum checkout: s…

Copier itself must be ≥ 9.4.0 (_min_copier_version) — pinned to the oldest version CI actually tests; older claims (9.0.0) never installed on Python 3.12.

Variable Type Default Options/Notes When-condition
project_name str (none — required) Lowercase project name (e.g., kalendar, kamail) — must match ^[a-z][a-z0-9_]{1,30}$
actor_display_name str {{ project_name | replace('_', ' ') | title }} Human-readable name (e.g., Kalendar, Kamail)
actor_description str AI Assistant actor for the Kaoohi platform One-line description (e.g., ‘AI Booking Assistant’)
domain_module str (none — required) Domain subdirectory name (e.g., booking, email) — must match ^[a-z][a-z0-9_]{1,20}$ — reserved: mesh, agent, api, core, kaoohi, shared, integrations, middleware, models, storage
domain_display_name str {{ domain_module | replace('_', ' ') | title }} Human-readable domain name (e.g., Booking, Email)
config_class_name str {{ actor_display_name | replace(' ', '') | replace('-', '') | replace('_', '') }}Config Config class name (e.g., KalendarConfig)
agent_class_name str {{ actor_display_name | replace(' ', '') | replace('-', '') | replace('_', '') }}Agent Agent class name (e.g., KalendarAgent)
python_version str 3.12 3.11 / 3.12 / 3.13 — Python version
Variable Type Default Options/Notes When-condition
agent_framework str deepagents deepagents / langchain — Agent base: ‘deepagents’ (planning/sub-agents) or ‘langchain’ (plain create_react_agent)
include_planning bool true [deepagents only] Add the planning/todo middleware (write_todos)? Opt-in since deepagents 0.7. Adds tokens; keep ON for multi-step actors. agent_framework == 'deepagents'
include_subagents bool true [deepagents only] Enable scoped sub-agents (the task tool)? Highest token cost (fan-out); enable only if delegation is needed. agent_framework == 'deepagents'
include_reflection bool true [deepagents only] Enable the SummarizationMiddleware context/reflection pass? Default ON for parity with current behavior. agent_framework == 'deepagents'
extra_middleware str "" [deepagents only] Comma-separated ‘module.path:ClassName’ middleware appended to the create_deep_agent stack. Blank = none. agent_framework == 'deepagents'
include_lean_channel bool false [deepagents only] Route one metadata channel to a lean plain-tool agent (langchain create_agent) for latency-critical surfaces? agent_framework == 'deepagents'
lean_channel_name str voice Metadata channel value that selects the lean agent (invoke with metadata {“channel”: this value}). include_lean_channel and agent_framework == 'deepagents'
lean_channel_tools str "" Comma-separated tool names the lean agent may call (subset of the actor’s tools). Blank = every tool. include_lean_channel and agent_framework == 'deepagents'
Variable Type Default Options/Notes When-condition
integration_type str none none / n8n / custom — Integration plugin: ‘none’, ‘n8n’, or ‘custom’
include_n8n_mcp bool true [n8n] Connect to n8n-mcp for node docs, templates, and validation? integration_type == 'n8n'
n8n_mcp_url str http://n8n-mcp:3000/mcp [n8n] n8n-mcp HTTP server URL (streamable_http transport) integration_type == 'n8n'
include_workflow_executor bool true [n8n] Enable dynamic workflow-as-tool discovery (calls n8n webhooks)? integration_type == 'n8n'
n8n_workflow_tag str kaoohi-tool [n8n] Tag that marks n8n workflows as callable tools integration_type == 'n8n'
n8n_allow_workflow_authoring bool false [n8n] Let the agent CREATE/UPDATE/DELETE/ACTIVATE workflows? Workflows can run arbitrary code — leave false unless the actor genuinely authors workflows integration_type == 'n8n'
workflow_sync_interval int 5 [n8n] Minutes between workflow tool re-discovery integration_type == 'n8n'
Variable Type Default Options/Notes When-condition
fleet_mesh bool false Include the inter-actor mesh client (lazy peer resolution via the kaoohi group resolver)? Enable for actors that belong to a suite.
mesh_depends_on str "" Peer roles this actor requires, comma-separated (e.g. ‘portefeuille’). Must match the bundle seed’s depends_on_mesh_role. Empty for a standalone actor. fleet_mesh
include_redis_reply_queue bool true Include Redis reply queue for WhatsApp/Evolution API delivery?
include_scheduler bool false Include background scheduler for periodic tasks?
include_panel bool false Include the owner-facing UI panel scaffold (served through the Kaoohi panel relay)?
panel_slug str {{ domain_module | replace('_', '-') }} [panel] URL slug and ui_panels id (e.g. ‘pipeline’, ‘inbox’) — must match ^[a-z][a-z0-9-]{1,30}$ include_panel
panel_title str {{ domain_display_name }} Panel [panel] Human-readable tab title shown in the chat workspace pane include_panel
declare_readiness_probe bool true Declare a readiness probe at /ready, separate from the liveness path? Without it the platform points liveness, readiness AND startup at /health, which must always return 200 — so readiness gates nothing and a pod that ca…
include_domain_tools bool true Render a domain-tools path in the orchestrator (_create_tools)?
docker_workers int 1 1 / 2 / 4 — Number of uvicorn workers in Docker CMD
resource_profile str auto auto / nano / small / standard / large — Pod size — ‘auto’ derives from your answers (docker_workers=4 → large, else standard: 250m/1000m + 256Mi/512Mi). Manual tiers for known-lean or known-heavy actors.
Variable Type Default Options/Notes When-condition
author_name str Kaoohi Team Author name
author_email str dev@kaoohi.com Author email
Variable Type Default Options/Notes When-condition
include_actor_config_mixin bool false Keep actor-specific Settings fields in an actor-owned src/config_actor.py (mixed into the config class; copier update never conflicts there)? Scaffolds the file once.
extra_config_fields_json str "" [advanced] JSON {sections,items} merged into the emitted config.json (used by kaoohi eject; leave empty)
Variable Type Default Options/Notes When-condition
kaoohi_category str deep_agent deep_agent / productivity / communication / business / data — Marketplace category
kaoohi_icon str "" Icon — emoji or asset path (e.g., ‘📅’ or ‘icons/myactor.svg’)
kaoohi_image_repo str ghcr.io/allcare/{{ project_name | replace('_', '-') }} GHCR image base: ghcr.io/allcare/.
kaoohi_required_connectors str {% if integration_type == 'n8n' %}n8n{% endif %} Required connectors, comma-separated (e.g., ‘google_calendar’ or ‘gmail,whatsapp’). Leave empty for none.
kaoohi_optional_connectors str whatsapp Optional connectors, comma-separated. Leave empty for none.
kaoohi_capabilities str chat Actor capabilities, comma-separated (e.g., ‘scheduling,reminders’)
kaoohi_expose_external_api bool true Expose this actor’s API publicly via the platform-managed edge (https://<PLATFORM_URL>/api/v1/k//…)? Each kompanion gets a public URL + API key. The pod still runs auth-off — kaoohi is the authorization boundary.…
kaoohi_external_api_operations str chat,status,health [external API only] Which operations to expose, comma-separated. Only idempotent, safe operations — settings/oauth are never eligible. kaoohi_expose_external_api
kaoohi_external_api_protocols str rest,mcp [external API only] Transports to expose, comma-separated: rest, mcp. REST is the HTTP API; mcp also exposes this kompanion as an MCP tool for AI agents. kaoohi_expose_external_api
  • documentation/05-configuration-reference.md — the actor-side config the template emits.
  • documentation/deepagents-intelligence-toggles.md in the kaboum repo (referenced from copier.yml) — measured cost/latency of the intelligence toggles.