Skip to main content
CogOS supports two schema construction modes:
  1. LLM Auto-Generation — The CM agent creates schema fields dynamically during build() (default)
  2. From Template — Select a preset template; CogOS copies it as a new schema file ({name}_{YYYYMMDD}_{HHmmss}.json) and subsequent chats dynamically update it via the CM agent

Built-in Templates

CogOS ships with two built-in templates:
TemplateDomainsDescription
generaluser_profile, user_interests, memory_eventsLong-term user memory for personalised AI assistants
roleplaychatbot_settings, relationship_schema, user_schemaCharacter and relationship tracking for roleplay scenarios
Run cogos init to export them as editable JSON files:
cogos init
# Exports built-in templates to ./templates/ (editable copies)
# Existing files are kept by default; use --force to overwrite

Template Sources & Priority

Templates are loaded from three sources, with later sources overriding earlier ones:
PrioritySourceDirectoryDescription
1 (lowest)Built-inBundled in codegeneral and roleplay
2User (shared)templates_dir (./templates/)Project-level templates, version-controlled
3 (highest)Custom (personal)custom_templates_dir (./templates/custom/)Personal templates, git-ignored
If two templates share the same name, the higher-priority source wins.

Template File Format

Templates use the same JSON format as schema files, with an optional _meta key:
{
  "_meta": {
    "name": "medical_record",
    "description": "Patient medical record schema"
  },
  "patient_info": {
    "data": {
      "meta": {
        "domain": {"value": "patient_info", "description": "Schema domain: patient_info"}
      },
      "name": {"value": "", "description": "Patient full name"},
      "diagnosis": {"value": "", "description": "Current diagnosis"},
      "medications": {"value": "", "description": "Current medications"},
      "allergies": {"value": "", "description": "Drug allergies"}
    },
    "_mutable": true
  }
}
The _meta.name field determines the template identifier. The file name can be anything ending in .json.

Using Templates

# Start server with a template
cogos serve --template general

# Build with a template
cogos build --template general --input notes.md --session user1
When you select a template (via CLI, API, or Web UI), CogOS copies the template into the schemas directory as a new schema file named {template_name}_{YYYYMMDD}_{HHmmss}.json and binds the current session to it. Subsequent conversations dynamically update this schema via the CM agent — the template simply provides the starting structure.

Creating Custom Templates

Via Web UI

  1. Open the Build Schemas modal → switch to From Template mode
  2. Click + New Template to open the template editor
  3. Fill in the template name, description, and fields
  4. Click Save Template — the file is saved to ./templates/custom/

Via File

Place any .json file in ./templates/ (shared) or ./templates/custom/ (personal):
# Shared template (version-controlled)
templates/my_template.json

# Personal template (git-ignored)
templates/custom/my_private_template.json

Via API

Save a custom template through the REST API:
curl -X POST http://localhost:8000/api/templates/custom \
  -H "Content-Type: application/json" \
  -d @my_template.json
Delete a custom template:
curl -X DELETE http://localhost:8000/api/templates/custom/my_template

Via OpenClaw Slash Command

Create templates directly from the chat using the compact text format:
/cogos templates create game_character 游戏角色记忆模板
  character: name | 角色名称, class | 职业, level | 等级, skills | 技能列表
  story: main_quest | 当前主线任务, side_quests | 支线任务
  social: friends | 好友列表, guild | 公会, reputation | 声望
Format rules:
  • First line: template_name description (name allows letters, numbers, _, -)
  • Following lines: domain_name: field1 | description, field2 | description
  • Fields separated by ,, field name and description separated by |
Or use JSON format:
/cogos templates create --json {"_meta":{"name":"my_template","description":"..."},...}
Delete a custom template:
/cogos templates delete my_template
Only custom templates can be deleted via the API or slash commands. Built-in and shared (user) templates are protected.

Template Resolution

Templates are resolved by name across all three sources. The resolution order (highest priority first):
  1. Custom templates in custom_templates_dir (./templates/custom/)
  2. User templates in templates_dir (./templates/)
  3. Built-in templates bundled with CogOS
Use the API to view templates grouped by source:
curl http://localhost:8000/api/templates/grouped