112 lines
5.4 KiB
Markdown
112 lines
5.4 KiB
Markdown
# 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
|
|
|