TODO
August 1, 2026 · View on GitHub
Last updated: 2026-07-27
Done
v0.2.0 Features
- Streaming tool-call parser — state-machine detects
<tool_call>blocks incrementally from streaming LLM output, fires events on</tool_call> - Tool guardrails — loop detection, idempotent/mutating classification, failure counting with configurable warn/block thresholds
- Pluggable context compaction —
Compactortrait + default LLM summarizer - Self-healing retry — auto re-prompt LLM with error context on tool failures
- Trajectory export — ReAct step serialization (thought→action→observation→response) for RL training data
- Autonomous mode — 24/7 workspace loop: read TODO.md, run agent, validate with tests, git commit/push only on success. Failure pause across restarts
- Skill curator — background task reviews skills, suggests improvements
- Plugin lifecycle hooks — PreToolHook, PostToolHook, LifecycleHook traits
- Skill template preprocessing —
${HERMES_SKILL_DIR}/${HERMES_SESSION_ID}vars +!\command`` inline shell substitution in SKILL.md - Cron scheduler — SurrealDB-backed with in-memory noop fallback for testing
- Hermes-style self-healing, loop detection, and compaction integration in loop_runner.rs
- All 85 tests pass, 0 clippy warnings
- v0.2.0 published to crates.io as
apollo-agent
Previous (v0.1.x)
- SurrealDB memory schema includes
files,chunks, FTS, and sticker cache - Conversation history is loaded by
chat_idbefore agent calls -
CLAUDE.mdis in sync with repo instructions via symlink toAGENTS.md -
cargo clippy --all-targets -- -D warningspasses -
cargo testpasses -
cargo build --releasepasses - GitHub issue
#2through#6resolved and closed - Toolset allowlists, session search, managed skills, Daytona scaffolding
Next
- Wire autonomous mode into CLI entrypoint (
apollo autonomous) - Integrate streaming parser into execution loop —
recover_tool_callsruns when the provider returns no native tool calls - Wire the rx4 bridge into the execution path
- Refresh and persist expired Anthropic OAuth tokens
- Add trajectory collection toggle in config.yaml
- Add tests for Telegram markdown conversion and long-message chunking
- Add tests for audio/sticker handling in Telegram
- Make guardrails state persistable across restarts
Backlog
- Session branching (JSONL tree with parent pointers in SurrealDB)
- Add
curator start|stopCLI commands - Docker runtime adapter to replace Daytona
- WASM-based plugin sandbox (long-term)