All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
-
TUI Professional Layout - Complete redesign of interactive mode
- Header bar with agent status, model, tool count, LLM calls, session timer
- Current tool indicator shows which tool is being executed
- Activity panel shows detailed tool information (name, arguments, duration)
- Token counts displayed in activity log for LLM responses
- Timestamped chat messages with role indicators (YOU/AI/SYS/ERR)
- Color-coded token gauge (green/yellow/red based on usage)
- Professional footer with context-aware keyboard shortcuts
-
Full Input Editing - Claude Code-like input experience
- Cursor movement with ←/→ arrow keys
- Word-by-word navigation with Ctrl+←/→
- Home/End keys to jump to start/end of input
- Ctrl+A/E for bash-style start/end navigation
- Backspace/Delete work at cursor position
- Ctrl+W to delete word before cursor
- Ctrl+U to clear entire input
- Multi-line input with Alt+Enter, Ctrl+J (cross-terminal compatible)
- Animated cursor shows position in text
-
Double-ESC to Exit - Vim-style exit
- Press ESC twice within 500ms to quit (when not busy)
- Single ESC still cancels running agent
-
Header Tool Count Fix
- Now shows "Tools: X (Y used)" where X = available, Y = executed
-
Real-time Tool Activity Events
- Activity panel now shows tool executions in real-time
- Tool name, arguments (truncated), and execution duration displayed
- Streaming events from runtime for accurate tool tracking
- Current tool indicator in header during execution
-
Interactive TUI Mode - Full-featured terminal user interface for agent conversations
- Launch with
aofctl run agent <config.yaml>(no--inputflag) - Chat panel with syntax-highlighted conversation history
- Activity log showing real-time agent events (thinking, analyzing, tool use, LLM calls)
- Context gauge displaying token usage and execution time
- Help overlay with keyboard shortcuts (press
?) - LazyGit-inspired styling with clear visual hierarchy
- Launch with
-
Agent Cancellation - Stop running agents with ESC key
- Graceful cancellation using tokio CancellationToken
- Clean abort of LLM calls and tool executions
- Status indicator shows "Cancelling..." during abort
-
Session Persistence - Conversation history saved automatically
- Sessions stored in
~/.aof/sessions/<agent-name>/ - Includes complete message history, token usage, activity logs
- JSON format for easy inspection and backup
- Sessions stored in
-
Session Resume - Continue previous conversations
--resumeflag to continue latest session:aofctl run agent config.yaml --resume--session <id>flag to resume specific session- Restored sessions show previous context to the agent
-
Session Management Commands
aofctl get sessions- List all saved sessions across agentsaofctl get sessions <agent>- List sessions for specific agent- Output shows session ID, agent, model, message count, tokens, age
- Supports
-o jsonand-o yamloutput formats
-
Activity Event System - Real-time agent activity tracking
- New
ActivityEventenum in aof-core with event types:- Thinking, Analyzing, LlmCall, ToolUse, ToolComplete, Warning, Error
ActivitySenderfor emitting events from runtimeActivityReceiverfor consuming events in TUI
- New
- TUI keyboard shortcuts updated:
ESCnow cancels running agent (was: do nothing)Ctrl+Ssaves session manuallyCtrl+Lclears chat and starts new sessionShift+↑/↓scrolls chat historyPageUp/Downscrolls 5 lines
- Updated getting-started guide with interactive mode examples
- Added TUI keyboard shortcuts to CLI reference
- Added session management documentation
- Updated aofctl reference with --resume and --session flags
- Built-in command handler support via
agent: builtinin trigger command bindings- Use
agent: builtinfor/help,/agent,/fleetto get interactive menus - Interactive menus include fleet/agent selection buttons (Telegram/Slack)
- Keeps built-in UI handlers separate from LLM-routed commands
- Use
- Stale message filtering for webhook handlers
- Messages older than 60 seconds are silently dropped
- Prevents processing of queued messages when daemon restarts
- Configurable via
max_message_age_secsin handler config
cargo install aofctlsupport via crates.io publishing- All AOF crates now published to crates.io
- Automated publishing on tagged releases
- New documentation: Built-in Commands Guide (
docs/guides/builtin-commands.md)
aofctl servenow produces visible startup output- Changed from tracing (default level: error) to println for critical startup messages
- Users can now see server bind address, registered platforms, loaded agents/flows
- Error messages use stderr for proper output separation
- GitHub/GitLab/Bitbucket PR reviews now post a single response instead of multiple comments
- Intermediate acknowledgment messages ("Thinking...", "Processing...") are skipped for Git platforms
- Only the final response is posted, keeping PR threads clean
- Slack/Telegram/Discord still show real-time progress indicators
- Improved
library://URI path resolution for agent library
- Token usage tracking for AgentFlow execution
- Agent nodes now report input/output tokens
- Flow completion summary shows total token usage
- Script nodes correctly show 0 tokens (no LLM usage)
--libraryflag foraofctl get agentsto list built-in agents- Shows all 30 production-ready agents from the library
- Displays domain (category), agent name, status, and model
- Supports filtering by agent name:
aofctl get agents pod-doctor --library - Supports JSON/YAML output formats
library://URI syntax for running agents from the built-in library- Format:
library://domain/agent-name - Example:
aofctl run agent library://kubernetes/pod-doctor --prompt "debug CrashLoopBackOff" - Helpful error messages showing available agents when agent not found
- Format:
--promptas an alias for--inputin the run command- More intuitive for LLM-style interactions
- Script node YAML field naming (
scriptConfigcamelCase) - Flow completion display formatting for token line
- Kubernetes Domain (5 agents)
- deploy-guardian: Validates deployments before production rollout
- node-doctor: Diagnoses and auto-heals node problems
- resource-optimizer: Right-sizes containers based on actual usage
- pod-debugger: Troubleshoots pod failures with context
- rollout-manager: Manages progressive deployments
- Observability Domain (5 agents)
- alert-manager: Manages Prometheus alerts with runbook automation
- slo-guardian: Monitors SLI/SLO compliance and error budgets
- log-analyzer: Analyzes logs for patterns and anomalies
- metrics-explorer: Queries and visualizes Prometheus metrics
- trace-investigator: Analyzes distributed traces
- Incident Domain (5 agents)
- rca-agent: Performs automated root cause analysis
- incident-commander: Orchestrates incident response
- escalation-manager: Routes incidents to appropriate teams
- postmortem-writer: Generates blameless postmortems
- runbook-executor: Executes runbooks with safety checks
- CI/CD Domain (5 agents)
- pipeline-fixer: Diagnoses and fixes failing pipelines
- build-optimizer: Optimizes build performance
- release-manager: Coordinates release workflows
- test-analyzer: Analyzes test failures and flakiness
- artifact-manager: Manages build artifacts and images
- Security Domain (5 agents)
- vuln-scanner: Scans for vulnerabilities with Trivy
- secret-auditor: Audits secrets management with Vault
- compliance-checker: Validates compliance with OPA policies
- access-reviewer: Reviews RBAC permissions
- security-responder: Responds to security incidents
- Cloud Domain (5 agents)
- cost-optimizer: Analyzes cloud costs and recommends savings
- drift-detector: Detects infrastructure drift with Terraform
- capacity-planner: Forecasts capacity needs
- backup-validator: Validates backup integrity
- multi-cloud-coordinator: Coordinates across AWS/Azure/GCP
- Core: filesystem, fetch, puppeteer
- Development: github, gitlab
- Databases: postgres (read-only), sqlite (read/write)
- Communication: slack
- Search: brave-search
Each catalog entry includes:
- Configuration examples for AOF agents
- Full tool reference with parameters
- Use case examples with agent specs
- Troubleshooting guides
- Agent Library user guide with domain overviews
- MCP integration guide with tested servers
- Wired both sections into Docusaurus sidebar
- Improved getting-started with zero-setup examples
- Cleaned up architecture documentation
- Updated all agent specs to use correct tool naming (underscore-separated)
- Simplified to 4 Core Concepts: Agent, Fleet, Flow, Trigger
- Composable Design: Mix and match agents, tools, and triggers
- Removed complex FlowBinding in favor of direct trigger→agent mapping
- Microsoft Teams - Bot Framework integration with Adaptive Cards
- JWT Bearer token authentication
- Tenant and channel restrictions
- Action.Submit handling for button clicks
- WhatsApp Business - Cloud API integration
- HMAC-SHA256 signature verification
- Interactive buttons and lists
- Template message support
- GitHub - Webhook integration for PR/Issue automation
- PR opened/updated/merged events
- Issue created/updated events
- Comment triggers with @mention detection
- GitLab - Webhook integration for MR automation
- Merge request events
- Pipeline status triggers
- Note (comment) events
- Bitbucket - Webhook integration for PR automation
- Pull request events
- Repository push events
- Jira - Issue tracking platform abstraction
- Issue created/updated/transitioned events
- JQL query support
- Comment and attachment handling
- Concepts: Teams, Discord, WhatsApp, Jira integration overviews
- Reference: Full API reference for each platform
- Tutorials: Step-by-step ops bot tutorials
- Quickstart Guides: 10-15 minute setup guides
- Thread support detection
- Interactive element support
- File attachment support
- Reaction support
- Rich text support
- Approval workflow support
- Simplified Agent Switching - Easy agent switching via
/agentand/helpcommands - Platform-Based Safety Layer - Read-only mode for mobile platforms
- Simplified Output - Text-only responses for better mobile display
- Daemon configuration simplified with direct platform webhook paths
- Telegram inline keyboard callback handling
- Agent loading when flows directory doesn't exist
- System prompts correctly loaded from agent YAML
- Model configuration from agent YAML (was hardcoded)
- 9 trigger platforms: Slack, Discord, Telegram, WhatsApp, Teams, GitHub, GitLab, Bitbucket, Jira
- 7 built-in tools: kubectl, docker, aws, terraform, git, shell, http
- Platform registry with factory pattern for extensibility
- Ed25519 (Discord) and HMAC-SHA256 (others) signature verification
- ~60,000 lines of Rust code
- Human-in-the-Loop Approval Workflow - Reaction-based command approval for Slack
- ✅/❌ reactions for approve/deny destructive operations
- Automatic ✅ ❌ reaction buttons added to approval messages
- Support for multiple approval reactions (thumbs up, checkmark variants)
- Configurable
approval_allowed_usersfor role-based approval
- Conversation Memory System - Context persistence across Slack messages
- Per-channel and per-thread memory isolation
- Automatic context injection for follow-up messages
- Supports "delete it", "scale that down" style contextual commands
- Configurable memory limits (20 messages default, 10 in context)
- AgentFlow Multi-Tenant Routing - Route messages to different agents based on patterns
- Pattern-based agent selection from incoming messages
- Support for multiple agents in a single flow
- Bot Self-Approval Prevention - Auto-detects
bot_user_idat startup- Uses Slack's
auth.testAPI to get bot's own user ID - Filters out bot's own reactions to prevent self-approval
- Uses Slack's
- New documentation guides:
docs/guides/approval-workflow.md- Complete approval workflow guidedocs/guides/conversation-memory.md- Conversation memory guide
- kubectl-style verb-noun CLI commands for Fleet and Flow resources
Flowresource type with short namefw(alias for workflow execution)- All documentation updated to use
aofctl <verb> <resource>syntax - Updated slack-k8s-bot agent with explicit kubectl syntax guidance
- Telegram inline keyboard callback handling - Fixed "Invalid selection" error when tapping agent/flow buttons
- Improved callback format parsing to handle both
callback:agent:nameandagent:nameformats - Added better debug logging for callback troubleshooting
- More descriptive error messages when callback parsing fails
- Improved callback format parsing to handle both
- System prompts from agent YAML files now correctly loaded and used
- Agent execution error handling with proper response to platforms
- Bracket structure in
handle_natural_languagefunction - Agent loading flag logic - Fixed issue where agents weren't loaded when flows directory didn't exist
- Introduced proper
agents_loadedboolean tracking - Agents now correctly pre-load regardless of flows configuration
- Introduced proper
/run agentusing wrong model - Fixed hardcoded Anthropic model to use pre-loaded agent's configuration- Now uses
google:gemini-2.5-flashfrom agent YAML - Tools and system prompts correctly applied
- Now uses
- Config changes to
approval_allowed_usersrequire server restart (hot-reload coming in Issue #22)
- Initial release with core aofctl functionality
- Agent execution with multiple LLM providers (OpenAI, Anthropic, Google, Ollama, Groq)
- MCP (Model Context Protocol) server support
- Memory backends (InMemory, File, SQLite)
- Built-in tools (Shell, HTTP, FileSystem)
- AgentFleet multi-agent coordination
- AgentFlow workflow orchestration
- Trigger system (Webhook, Schedule, FileWatch, Slack, GitHub, PagerDuty)
aofctl run agent <file>- Execute an agentaofctl run workflow <file>- Execute a workflowaofctl run fleet <file>- Execute a fleetaofctl get <resource>- List resourcesaofctl describe <resource> <name>- Show resource detailsaofctl apply -f <file>- Apply configurationaofctl delete <resource> <name>- Delete resourcesaofctl logs <resource> <name>- View logsaofctl api-resources- List available resource typesaofctl version- Show version information
| Resource | Short Name | Description |
|---|---|---|
| agents | ag | AI agents |
| workflows | wf | Multi-step workflows |
| fleets | fl | Multi-agent coordination |
| flows | fw | Workflow aliases |
| tools | tl | MCP tools |
- MAJOR: Breaking changes to CLI or API
- MINOR: New features, backwards compatible
- PATCH: Bug fixes, documentation updates
- Added: New features
- Changed: Changes to existing functionality
- Deprecated: Features to be removed in future
- Removed: Features removed in this release
- Fixed: Bug fixes
- Security: Security-related changes