5.4 KiB
Aetheel — Future Features Roadmap
Features inspired by nanoclaw that can be implemented in the CLI-based gateway. Excludes Docker containers, WhatsApp channel, and Agent SDK (already ruled out).
✅ Completed
Message History Storage ✅
Store inbound/outbound messages in a JSON file per channel. Implemented at config/messages/{channelId}.json with append-only storage, max 100 messages per channel, auto-trimmed.
Structured Logging ✅
Pino-based structured JSON logging with configurable log levels via LOG_LEVEL env var. Pretty-printed in dev, JSON in production.
Conversation Archiving ✅
Every exchange saved as readable markdown in config/conversations/{channelId}/{YYYY-MM-DD}.md.
Retry with Backoff ✅
Backend CLI calls retry 3 times with exponential backoff (5s, 10s, 20s) on transient errors. Session corruption errors fail immediately.
Idle Timeout for Sessions ✅
Auto-clear sessions after configurable period of inactivity per channel (default 30 min). Tracked via lastActivityTimestamp in the session manager.
IPC-Based Proactive Messaging ✅
Agent writes JSON files to config/ipc/outbound/ using the Write tool. Gateway polls every 2 seconds, delivers messages, and deletes processed files.
Skills Engine ✅
config/skills/ directory where each subdirectory contains a SKILL.md file. Skills are loaded into the system prompt as additional sections.
Config Simplification ✅
Merged soul.md, identity.md, user.md, and tools.md into a single CLAUDE.md file.
Mission Control Dashboard ✅
Embedded web-based dashboard served on port 3100 with:
- Command Center — Real-time stats, live activity feed, agent config
- Activity — Full event history with SSE real-time updates
- Sessions — Active Discord channel sessions and message viewer
- Second Brain — Knowledge store with facts (notes/URLs/files), categories, tags, search. Plus memory and persona editors, and skills viewer
- Productivity — Kanban-style task board (To Do → In Progress → Done) with priorities, projects, and due dates
- Content Intel — Content curation (articles, videos, papers, repos) with status tracking (queued → read → archived)
- Scheduler — View cron jobs, heartbeat checks, and lifecycle hooks
- Connections — Integration statuses
- Settings — Config overview and quick todos
All backed by local JSON file persistence in config/ via local-store.ts — zero external dependencies.
Multi-Backend Support ✅
Abstracted backend interface (BackendAdapter) with pluggable CLI adapters. Supports five backends: Claude Code, Codex, Gemini CLI, OpenCode, and Pi. Switchable via AGENT_BACKEND env var. Each adapter normalizes CLI-specific JSON output into a common BackendEventResult format. Full property and unit test coverage for all backends.
Remaining Features
Agent-Managed Tasks via File-Based IPC (Medium Effort)
The agent can create, pause, resume, and cancel scheduled tasks dynamically during a conversation.
Our approach: The agent writes task definitions to config/tasks.json using the Write tool. The gateway polls this file periodically and schedules/unschedules tasks accordingly. Task format:
[
{
"id": "morning-briefing",
"prompt": "Good morning! Check email and summarize.",
"schedule_type": "cron",
"schedule_value": "0 9 * * *",
"status": "active",
"target_channel": "1475008084022788312"
}
]
Multi-Turn Message Batching (Medium Effort)
Instead of sending one message at a time to Claude, batch multiple messages that arrive while the agent is processing.
Our approach: When a message arrives while the agent is already processing for that channel, queue it. When the current processing finishes, batch all queued messages into a single prompt with sender/timestamp metadata.
Per-Channel Isolation (Medium Effort)
Different channels could have different persona configs. A "work" channel gets a professional persona, a "fun" channel gets a casual one.
Our approach: Support a config/channels/{channelId}/ override directory. If it exists, load persona files from there instead of the root config. Falls back to root config for missing files.
SQLite Storage (Bigger Effort)
Replace JSON files with SQLite for messages, sessions, tasks, and state. Better for concurrent access, querying, and doesn't corrupt on partial writes.
Our approach: Install better-sqlite3, create a single config/aetheel.db with tables for sessions, messages, tasks, and state. Migrate existing JSON files on first run.
Secrets Management (Bigger Effort)
Prevent API keys and sensitive data from leaking through agent tool use.
Our approach: Add a sanitization step: before passing the prompt to Claude, strip any env var values that look like secrets from the system prompt. Also consider using --disallowedTools Bash if the agent doesn't need shell access.
MCP Server Integration (Bigger Effort)
Expose Aetheel's capabilities as MCP tools so the agent can interact with the dashboard data, manage tasks, and store knowledge programmatically during conversations.
Priority Recommendation
- Agent-managed dynamic tasks (agent autonomy)
- Multi-turn message batching (UX improvement)
- Per-channel isolation (flexibility)
- MCP Server integration (agent ↔ dashboard)
- SQLite storage (reliability at scale)
- Everything else as needed