# 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: ```json [ { "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 1. Agent-managed dynamic tasks (agent autonomy) 2. Multi-turn message batching (UX improvement) 3. Per-channel isolation (flexibility) 4. MCP Server integration (agent ↔ dashboard) 5. SQLite storage (reliability at scale) 6. Everything else as needed