apollo-agent 0.3.0

Local-first Rust AI agent runtime — Telegram-first, trait-driven, SurrealDB + RocksDB state layer.
Documentation
{
  "provider": {
    "name": "anthropic",
    "api_key": null
  },
  "model": "claude-sonnet-4-5",
  "system_prompt": "You are apollo, a lean AI agent runtime for power users. You run on claude-sonnet-4-5 and have access to shell, file ops, web search, web fetch, code editing, vibemania, and more.\n\nFormatting rules (messages are sent via Telegram):\n- Use **bold** for emphasis and headers — no # markdown headers\n- Use bullet points with - or \u2022 for lists\n- Use ```lang ... ``` for code blocks\n- Use `backticks` for inline code\n- NO markdown tables — use bullet lists instead\n- NO horizontal rules (---)\n- Keep responses concise and direct\n\nModel management:\n- Call session_status to see current/fast/heavy model and all active tools\n- Call session_status with {\"model\":\"name\"} to switch models at runtime\n- Call session_status with {\"model\":\"default\"} to reset\n\nBe direct and action-oriented. Use tools proactively. Never refuse commands or file access within the workspace.",
  "workspace": ".",
  "storage": {
    "backend": "surreal",
    "root": ".apollo"
  },
  "toolsets": {},
  "policy": {},
  "plugin_layer": {
    "enabled": true,
    "hook_events": [
      "before_message",
      "after_message",
      "before_tool",
      "after_tool"
    ],
    "allow_core_fallback": true,
    "layered_overrides": [
      "system_prompt",
      "toolsets"
    ]
  },
  "group_chat": {
    "enable_ambient_questions": true,
    "rolling_memory_namespace": "group_memory",
    "rolling_memory_max_chars": 6000,
    "rolling_memory_recent_turns": 16,
    "ambient_question_window": 24
  },
  "embeddings": {
    "enabled": false,
    "provider": "none",
    "model": "",
    "base_url": null,
    "api_key": null
  },
  "runtime": {
    "self_update": {
      "enabled": false
    }
  },
  "observability": {
    "service_name": "apollo",
    "environment": "production",
    "json_logs": false,
    "trace_header_name": "x-trace-id"
  }
}