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.
- Mini Pomodoro Timer — Compact countdown widget in the global header bar, visible on all pages when a Pomodoro session is active. Shows progress ring, session type icon, and countdown. Click to navigate to Pomodoro page. Auto-hides when no session is running or when on the Pomodoro page itself.
- MiniPomodoro component (
packages/ui/src/components/MiniPomodoro.tsx) — Self-contained component with WebSocket updates and independent countdown
- Pomodoro Timer Broken on Non-UTC Machines — Root cause: PostgreSQL
TIMESTAMP(without timezone) columns +pgdriver's default parser interprets stored values as local time. On non-UTC machines,startedAtwas shifted backward, causingfetchState()to calculateremaining = 0and immediately auto-complete every session. Fix:pg.types.setTypeParser(1114)forces UTC interpretation for all timestamp columns. - Pomodoro Timer Effect — Removed
timeLeftfrom the timeruseEffectdependency array, which was needlessly recreating the interval every second - CI: notification-router.test.ts — Test was hitting real PostgreSQL (port 25432) instead of mocks after preferences were migrated to DB-backed storage. Added
settingsRepomock with in-memory Map. - Code Formatting — Fixed 88 files with Prettier formatting issues that were failing
format:checkin CI
0.1.10 - 2026-03-14
- 6 Workflow Node UI Components — DataStore (cyan), SchemaValidator (orange), Filter (emerald), Map (sky), Aggregate (amber), WebhookResponse (rose) with color-coded canvas nodes, status indicators, and execution timing
- 6 Node Config Panels — Full right-panel editors for each new node type with field editors, template validation, output alias, retry/timeout
- LLM Conversation Context Editor — Add/edit/remove multi-turn messages with role selector before main user message
- LLM Response Format UI — Text/JSON selector with JSON badge on canvas node
- Execution Progress Bar — Real-time toolbar showing running node name, completed/total count, retry counter
- Execution Timeline Labels — Node labels instead of raw IDs in both live and historical log views
- 9 Workflow Integration Tests — Template resolution, condition branching, ForEach body, error propagation, filter/map/aggregate, DataStore persistence
- Workflow Execution —
node_completeevent now includesretryAttempts; cancelled workflows logged as 'cancelled' instead of 'failed' - Circular Dependencies (core) — Broke fragile
tool-validation ↔ toolscycle with lazy import (was last remaining dangerous cycle) - Circular Dependencies (gateway) — Broke 45+ cycles across 4 root causes:
agents↔ws/server(lazy import),tool-providers↔routes(cached lazy executors),webchat-handler↔server(lazy import),normalizers barrel(extracted types.ts)
- ToolPalette sidebar now shows all 23 node types
- NodeSearchPalette includes 6 new node types
- Node config router dispatches to 23 panel types
- All normalizers import from
types.tsinstead of barrelindex.ts
- Deleted orphan
services/_gen.js(console.log stub, unused)
0.1.9 - 2026-03-14
- 6 New Workflow Nodes — DataStore (key-value persistence), SchemaValidator (JSON schema validation), Filter (array filtering), Map (array transformation), Aggregate (sum/count/avg/min/max/groupBy/flatten/unique), WebhookResponse (HTTP response for webhook triggers)
- LLM Node Improvements —
responseFormat: 'json'for auto-parsed JSON output,conversationMessagesfor multi-turn context - 5 Workflow Templates — GitHub Issue Triage, Data Pipeline, Scheduled Report, Multi-Source Merge, Approval Workflow
- Webhook Trigger Integration —
POST /webhooks/workflow/:pathendpoint with HMAC-SHA256 signature validation - Approval Recovery —
resumeFromApproval()auto-resumes paused workflows when approval is decided - Fleet Command Tests — 68 comprehensive tests covering lifecycle, scheduling, task execution, budgets, concurrency
- Fleet Event-Driven Scheduling — Fleets can now trigger cycles on EventBus events
- Fleet Shared Context Feedback — Worker outputs automatically feed back into shared context for downstream workers
- Fleet Session Cleanup — Old completed/failed sessions automatically cleaned on boot
- Cost Tracking (all systems) —
calculateExecutionCost()shared utility now populatescostUsdin BackgroundAgentRunner, SubagentRunner, FleetWorker, and SoulHeartbeatService; budget enforcement is now functional - Fleet Dependency Cascade — Failed tasks now propagate failure to all dependent tasks (no more deadlocked task chains)
- Fleet Shared Context Mutation —
structuredClone()prevents cross-worker context corruption - Fleet Cron Scheduling — Now uses
getNextRunTime()from core instead of stub 60s fallback - Fleet Orphaned Tasks — Tasks stuck in 'running' from crashes are re-queued on fleet start
- Fleet
executed_atTimestamp — Worker execution time now properly saved to DB - Workflow DataStore Memory Leak — Added 10K entry limit with LRU eviction and
clearDataStore()export - Workflow SubWorkflow Auth — Added userId ownership check (prevents cross-user access)
- Workflow SubWorkflow Abort — Parent abort signal now propagates to child workflow execution
- Workflow Node Limit — Max 500 nodes per workflow (DoS prevention)
- Workflow Copilot Prompt — All 23 node types documented with correct short names matching
convertDefinitionToReactFlow - Workflow Wizard Templates — Rewritten with valid node types (previously used non-existent
start/ai/endtypes) - Merge Node
firstCompleted— Mode parameter now functional (was no-op returning same aswaitAll) - Notification Node — Awaits broadcast instead of fire-and-forget, surfaces delivery warnings
- Code Node — Validates language input (rejects unsupported languages instead of silent fallback)
- Delay Node — Logs warning when 1-hour safety cap is applied
- Agent Concurrent Guard —
cycleInProgressflag prevents double cycle execution - Agent Rate Limit Retry — Re-schedules with backoff after throttling (was silently stopping)
- Agent Crew Context Cache — 30-second TTL cache reduces N*3 DB queries per heartbeat to 1
- getCommunicationBus() — Throws descriptive error instead of unsafe non-null assertion crash
- Subagent spawnCounts — Cleaned up when conversations have no active sessions (was growing unbounded)
- Workspace Creation — Warning logged instead of silent debug on failure
- Extracted
agent-runner-utils.ts— shared tool registration, agent factory, model resolution, timeout, JSON parsing (~360 LOC dedup) - Centralized scheduling constants (
config/defaults.ts) —MANAGER_MAX_CONSECUTIVE_ERRORS,MANAGER_SESSION_PERSIST_INTERVAL_MS, per-system delay bounds AutonomousAgentResultbase interface for unified result types across all runners- Fleet mission context included in all worker types (coding-cli, mcp-bridge were missing it)
- Bump hono 4.12.3 → 4.12.8 (arbitrary file access, prototype pollution, cookie/SSE injection)
- Bump @hono/node-server 1.19.9 → 1.19.11 (authorization bypass via encoded slashes)
- Bump undici override >=6.23.0 → >=6.24.1 (WebSocket DoS, CRLF injection, request smuggling)
- 26,650+ tests total (core: 9,832; gateway: 16,236; ui: 141; cli: 293; channels: 148)
- New: 68 Fleet Command tests, workflow node executor improvements
0.1.8 - 2026-03-14
- Unified Channel System — Extensible channel SDK with UnifiedBus event router and UCP (Unified Channel Protocol) adapters; channels register via builder pattern with standardized lifecycle hooks
- Web Chat Channel Plugin — Embeddable floating chat widget for websites with real-time WebSocket messaging, session management, and customizable appearance
- SMS Channel Plugin — SMS messaging channel via Twilio integration with send/receive support
- Email Channel Plugin — Email channel via SMTP/IMAP with inbound parsing and outbound delivery
- Matrix Channel Plugin — Matrix protocol channel for federated messaging support
- Cross-Channel Notification System — Unified notification dispatching across all connected channels with priority routing, delivery tracking, and fallback chains
- Fleet System — Multi-worker fleet management with worker assignment, budget configuration, schedule parameters, real-time status events, and full admin UI with detail panels
- Claw Mode (Autonomy L5) — Enhanced crew orchestration mode with elevated autonomy capabilities for coordinated multi-agent operations
- Crew UI Panels — Shared memory and task queue panels for crew collaboration visibility
- Dashboard Enhancements — Claw badges and crew metrics widgets on the main dashboard
- ACP for Coding Agents — Agent Communication Protocol enabled for all coding agent providers with critical bug fixes
- Autonomy Logging — Comprehensive structured logging across all autonomous systems (pulse, heartbeat, triggers, background agents)
- Database Backup Endpoints — Backup listing and download via REST API
- Setup Wizard Documentation — Interactive setup wizard docs with type safety improvements
- Fleet Boot/Lifecycle — Fixed critical bugs preventing fleet system from starting: worker config snake_case→camelCase mapping, race condition guard, missing tool registrations
- Autonomous Agent Scheduling — Fixed provider fallback, duration calculation, and scheduling bugs in background agents
- Session Shutdown Cleanup — Removed hardcoded
limit:100truncation and added proper session cleanup on shutdown - Production Hardening — Fixed shutdown ordering, memory leaks in timers, security edge cases, and logging gaps
- Autonomy Performance — Skip LLM call when no signals detected; skip high-frequency tool events in trigger engine
- Silent Failures — Upgraded swallowed errors to warn-level logging across autonomous systems
- CLI Provider Endpoints — Added CLI provider support to detail and models API endpoints
- Docker Monorepo Build — Fixed Dockerfile for correct monorepo structure
- UI Wizard Scroll — Fixed wizard buttons scrolling out of view
- Husky Pre-Commit Hook — Added missing shebang line
- WebSocket Server Test — Fixed circular import TDZ error and missing mock exports
- Comprehensive complexity reduction refactoring across the codebase
- Database API path changed from
/databaseto/db - Removed unused dependencies and dead code cleanup
- Skip LLM call when no autonomy signals detected
- Skip high-frequency tool events in trigger engine evaluation
0.1.6 - 2026-03-06
- Conversation Sidebar — Persistent conversation sidebar with ID-based session persistence, inline rename support, and auto-refresh on channel events
- Pairing Key Ownership — Per-channel rotating pairing keys for channel access control with revoke support; pairing key banner on Channels page
- WhatsApp Group Support — Group message storage, group messages API endpoint, group/chat listing endpoints, and passive history sync with on-demand fetch
- WhatsApp Anti-Ban Hardening — P0 anti-ban safety filters, auto-reply protection, history sync race condition fixes, and 440 connectionReplaced reconnect loop fix
- WhatsApp Auto-Claim Owner — Automatically claim channel ownership on first self-chat message, removing the need for manual
/connect - Crew Orchestration Engine — Runtime crew orchestration with Plans tab integration and agent lifecycle fixes
- Debug System Prompt Breakdown — Full system prompt section breakdown logged on every request with DebugDrawer UI showing per-section drill-down
- Perplexity Agent API — Added Perplexity Agent API provider configuration
- Anthropic Prompt Caching — Moved orchestrator to static cache block; round time context to hour boundary to prevent cache invalidation; moved extensions before cache split point
- Provider Empty Content — Send
nullcontent instead of""for assistant messages with tool_calls (fixes Anthropic validation errors) - Composio Integration — Fixed
getAvailableAppsflat-array response handling, meta field mapping, and invalid'google'slug - Chat Double-Persistence — Extracted ConversationService, fixed messages being persisted twice
- WhatsApp QR Code — Fixed QR code not appearing when session is stale/expired
- WhatsApp Self-Chat — Fixed intermittent self-chat send failures
- Channel Owner Flow — Reply with
/connectinstructions when no owner claimed; sidebar auto-refresh on channel events - UI Logout Button — Show Logout button in both connected and disconnected channel states
- Extension Creator DOM Error — Resolved
insertBeforeDOM error in extension creator (#8) - Debug Log Truncation — Removed truncation from debug log entries, store full section content
- Soul Agent Pipeline — 17 FIXPLAN fixes across heartbeat pipeline and extension creator (commit
12e996d)
- Extracted
ConversationServicefrom chat route for cleaner separation of concerns - Channel history improvements for better message threading
- Removed unused code and improved type safety in resource tools
- Removed generated
models-dev-full.jsonartifact, updated.gitignore
- SSRF / DNS Rebinding Protection —
isBlockedUrl()sync hostname check +isPrivateUrlAsync()with DNS rebinding detection and 1-min cache; applied to browser service,/fetch-url, and web-fetch executors - Rate Limiter TTL Cleanup — Fixed memory leak in sliding window rate limiter
- XSS Escaping — Added output escaping for user-controlled content in HTML responses
- 389+ test files, 22,100+ tests total
- New: soul agent unit tests (127 core tests across 6 files), gateway soul coverage (souls repo, communication tools, heartbeat service)
0.1.5 - 2026-03-02
- Soul Agent System — Rich agent identity framework with personality, mission, role, relationships, heartbeat-driven lifecycle, evolution tracking, and boot sequences; gateway service with full CRUD and heartbeat execution
- Autonomous Hub — Unified command center consolidating soul agents, background agents, crews, messaging, and activity into a single tabbed dashboard with search, filters, and real-time WebSocket status
- AI Agent Creator — Conversational agent creation via SSE streaming chat with a dedicated designer agent; describe what you need in plain language, refine through conversation, preview the JSON config, and create in one click
- Crew System — Multi-agent crews with role assignments, delegation protocols, and crew templates for coordinated multi-agent workflows
- Agent Communication — Inter-agent messaging system with inbox, compose, and message history; CommsPanel for viewing and sending messages between agents
- Activity Feed — Unified timeline of heartbeat logs and agent messages with aggregate stats (total runs, success rate, avg duration, total cost)
- 16+ Agent Templates — Pre-built agent configurations (Morning Briefer, News Monitor, Code Reviewer, Budget Tracker, Social Media Manager, Health & Wellness Coach, etc.) with one-click creation
- Agent Profile Page — Detailed agent view with identity display, inline soul editor, heartbeat configuration, action controls (pause/resume/delete), and error/not-found handling
- Global Status Bar — Compact header showing live agent count, running/paused/error breakdown, daily cost, WebSocket connection state, and autonomy settings link
- 77 new AI providers — Updated provider model data with 77 providers and 1 new addition
- AI Creator chatbot behavior — Fixed AI Agent Creator acting like a regular chatbot instead of designing agent configs; root cause was
BASE_SYSTEM_PROMPToverriding the inline designer instruction; now uses a dedicated__ai_agent_designeragent with proper system prompt viaagentIdrouting - Autonomous Hub modal backgrounds — Replaced invalid
bg-surfacewith validbg-bg-primaryTailwind token - WebSocket connection status — Fixed
useAgentStatushook to properly returnisConnectedstate for live/offline indicator - Empty state UX — Added differentiated empty state buttons (Browse Templates / Chat with AI / Create Manually) with separate
wizardInitialSteptracking - Agent profile error handling — Distinguished between loading errors (with retry) and agent-not-found (with navigation back) in AgentProfilePage
- Activity feed error state — Added inline error display with retry button in ActivityFeed
- Template fetch errors — Added toast notification when crew template loading fails on hub mount
- CommsPanel improvements — Fixed "from" field population in compose form and added loading spinner during data fetch
- TemplateCatalog search — Added clear button to search input for better UX
- Silent catches — Replaced empty catch blocks with user-facing error toasts in CrewSection, CommsPanel, and SoulEditor
- Accessibility — Added
aria-labelto all icon-only buttons across the autonomous hub (back button, stop generating, tag remove, close creator) - Type safety — Removed unsafe
as anyandas unknowntype assertions across all autonomous hub components - Structured logging — Converted template-literal error logs to structured context objects in gateway observability
- Fetch security — Added fetch timeout and download size limits with budget enforcement tests
- 12 bugs from BUGS.md — Resolved P0 through P3 priority bugs plus SEC-001 security finding
- Provider model data updated (77 providers)
- Soul tools registered in gateway providers with formatted structured log context
- Cleaned up unused imports, dead code, and repo artifacts
- 389+ test files, 22,100+ tests total
0.1.4 - 2026-02-28
- Background Agents — Persistent autonomous agents that run independently on interval, continuous, or event-driven schedules with rate limiting, budget tracking, auto-pause on errors, and graceful shutdown
- Background Agent Full Tool Access — Background agents now have the same capabilities as chat agents: all 170+ tools, extension/skill tools, plugin tools, MCP tools, memory injection, and configurable provider/model selection
- Background Agent Workspace Isolation — Each background agent gets an isolated file workspace for safe file operations
- WhatsApp Baileys Integration — Replaced Meta Cloud API with Baileys library for WhatsApp; QR code authentication (no Meta Business account needed), self-chat mode with loop prevention, session persistence in app data directory
- Channel User Approval System — Multi-step verification for channel users: approval code flow, manual admin approval, user blocking/unblocking with real-time notifications
- EventBus Deep Integration — Unified event backbone across the entire system; EventBusBridge translates dot-notation events to WebSocket colon-notation for real-time UI updates
- Event Monitor UI — Live event stream viewer for debugging EventBus events in the web UI
- Extension SDK — Extensions can call any of 150+ built-in tools via
utils.callTool(), withutils.listTools(), Config Center access, and blocked tool enforcement - 6 Default Extensions — Daily Briefing, Knowledge Base, Project Tracker, Smart Search, Automation Builder, Contact Enricher bundled out-of-the-box
- Extension Security Audit — LLM-powered security analysis for skills and extensions before installation
- Selective Extension Injection — Request-preprocessor routing for targeted extension injection per conversation
- Channel Soft Disconnect / Hard Logout —
disconnect()preserves session for instant reconnect;logout()clears session data requiring re-authentication (e.g. new QR scan) - Workflow Enhancements — 7 new node types, input_schema column, workflow versioning and approvals
- Extension tools synced into shared ToolRegistry with
ext.*/skill.*namespace prefixes - Channel user events (
first_seen,blocked,unblocked,pending) emitted via EventBus with complete WS forwarding - Channels reduced to Telegram + WhatsApp (Discord/Slack/LINE/Matrix removed)
- Scheduler Day Boundary —
getNextRunTimetest failed on month-end dates (e.g. Feb 28 → Mar 1) due to incorrect rollover arithmetic - Vitest Constructor Mocks — Fixed test stability issues with constructor mocking patterns across gateway tests
- Test Helpers Build Error — Added explicit return types to test-helpers to fix TS2742 build error
- 366+ test files, 21,500+ tests total
- New: background-agent-manager, background-agent-runner, background-agent-tools, service-impl logout tests
0.1.3 - 2026-02-26
- Model Routing — Per-process model selection (chat, telegram, pulse) with provider fallback chains, configurable via API and UI
- Extended Thinking — Anthropic extended thinking support with configurable budget tokens for deeper reasoning
- Sidebar Reorganization — Navigation menus reordered by usage frequency: daily items at top, power-user features in collapsible groups, settings ordered by domain
- Telegram FK Constraint — Second message after server restart failed with
channel_sessions_conversation_id_fkeyviolation; conversation recovery now persists to DB before updating FK (fixes #7) - Dashboard Streaming — Null model parameter caused TypeScript build failures in
generateAIBriefingStreaming - Expenses Page — Feb-31 date bug when filtering by month; added edit support with modal form
- SystemPage Polling — Database operation status polling leaked timers on unmount; added ref-based cleanup
- ApiKeysPage — Default model save silently swallowed errors; now shows toast feedback
- AutonomyPage —
Promise.all→Promise.allSettledso partial API failures don't blank the page - ModelsPage — Settings link pointed to
/settingsinstead of/settings/api-keys - WorkspacesPage — Empty workspace badge showed for workspaces with 1 file (should be 0)
- CalendarPage — No validation when end date/time was before start
- TasksPage — Missing
cancelledstatus in filter and visual styling - SKILL.md Parser — Improved YAML metadata parsing for block sequences and nested maps
- Config Center: removed 5 orphaned seed services (Deepgram, DeepL, Tavily, Serper, Perplexity) with no built-in consumer code
- Gateway routes:
parseJsonBodyhelper adopted across all route modules - Dev dependencies bumped: ESLint 10.0.2, Turbo 2.8.11, typescript-eslint 8.56.1
.gitignore: broader protection patterns for stray generated files
0.1.2 - 2026-02-26
- CLI Tools Platform — 40+ discoverable CLI tools with automatic PATH-based binary detection, categorization (linters, formatters, build tools, package managers, security scanners, databases, containers), and version detection
- Per-Tool Security Policies —
allowed(auto-execute),prompt(require approval),blocked(reject) per user per tool, with batch policy updates via API - Dynamic Risk Scoring — Catalog-based risk levels (low/medium/high/critical) feed into the autonomy risk engine, overriding generic tool risk scores
- Custom CLI Tool Registration — Register any binary as a CLI tool with category and risk metadata via
POST /cli-tools/custom - CLI Policy Approval Integration — Per-tool policies wired into the real-time approval flow in the orchestrator, dynamic risk scoring based on catalog risk levels
- Coding Agents — Orchestrate external AI coding CLIs (Claude Code, Codex, Gemini CLI) with session management, real-time terminal output streaming, and result persistence
- Dual Execution Modes — Auto mode (headless
child_process.spawn) and interactive mode (PTY terminal) for coding agents - Custom Coding Agent Providers — Register any CLI binary as a coding agent provider via the CLI Providers API
- Model Routing — Per-process model selection (chat, telegram, pulse) with fallback chains, configurable via API and UI
- Extended Thinking — Anthropic extended thinking support for deeper reasoning in complex tasks
- Gateway route modules: 40 → 43 top-level (added
coding-agents.ts,cli-tools.ts,cli-providers.ts,model-routing.ts) - Repositories: 37 → 41 (added
coding-agent-results,cli-providers,cli-tool-policies,autonomy-log) - UI pages: 41 → 47 (added CodingAgentsPage, CodingAgentSettingsPage, CliToolsSettingsPage, ModelRoutingPage, SecurityPage, AboutPage)
- WebSocket events: added
coding-agent:session:*for coding agent lifecycle
- 315+ test files, 19,200+ tests total
- New: coding-agent-service, coding-agent-sessions, cli-providers, cli-tool-policies, coding-agent-results repository tests
0.1.1 - 2026-02-23
- Pulse System — Autonomous AI-driven engine that proactively gathers context, evaluates signals, invokes the LLM, executes actions, and reports results on an adaptive timer (5–15 min)
- Pulse Directives — Configurable evaluation rules, action cooldowns, blocked actions, custom instructions, and 4 preset templates (Balanced, Conservative, Proactive, Minimal)
- Pulse Execution Lock — Prevents concurrent pulse execution; manual and auto pulses share the same lock
- Pulse Activity Broadcasting — Real-time WebSocket
pulse:activityevents with stage progression (starting → gathering → evaluating → deciding → executing → reporting → done) - Pulse Activity Monitor (UI) — Live activity banner with stage name and elapsed time, "Run Now" button disables during pulse, 409 toast on concurrent attempts
- Pulse History & Stats — Paginated pulse log with signal IDs, urgency scores, action results, and expandable details
- Pulse Route Guard —
POST /pulse/runreturns 409ALREADY_RUNNINGwhen a pulse is in progress
AutonomyEngine.getStatus()now includesactivePulsefield (null when idle)- Broadcaster in
server.tsroutespulse:activityevents separately fromsystem:notification
- 315 test files, 19,100+ tests total
- New: 5 engine execution lock tests + 2 route guard tests
0.1.0 - 2026-02-22
Initial release of OwnPilot.
- Multi-Provider AI — 4 native providers (OpenAI, Anthropic, Google, Zhipu) + 8 aggregators (Together AI, Groq, Fireworks, DeepInfra, OpenRouter, Perplexity, Cerebras, fal.ai) + any OpenAI-compatible endpoint
- Local AI Support — Auto-discovery for Ollama, LM Studio, LocalAI, and vLLM
- Smart Provider Routing — Cheapest, fastest, smartest, balanced, and fallback strategies
- Anthropic Prompt Caching — Static system prompt caching to reduce input token costs
- Context Management — Real-time token tracking, detail breakdown, and AI-powered context compaction
- 170+ Built-in Tools across 28 categories (personal data, files, code execution, web, email, media, git, translation, weather, finance, automation, vector search, data extraction, utilities)
- Meta-tool Proxy — Only 4 meta-tools sent to the LLM; all tools available via dynamic discovery
- Tool Namespaces — Qualified tool names (
core.,custom.,plugin.,skill.,mcp.) - MCP Integration — Client (connect to external MCP servers) and Server (expose tools to MCP clients)
- User Extensions — Installable tool bundles with custom tools, triggers, services, and configs
- Skills — Open standard SKILL.md format (AgentSkills.io) for instruction-based AI knowledge packages
- Custom Tools — Create new tools at runtime via LLM (sandboxed JavaScript)
- Connected Apps — 1000+ OAuth integrations via Composio
- Personal Data — Notes, Tasks, Bookmarks, Contacts, Calendar, Expenses with full CRUD
- Productivity — Pomodoro timer, habit tracker, quick capture inbox
- Memories — Long-term persistent memory with importance scoring, vector search, AES-256-GCM encryption
- Goals — Goal creation, decomposition, progress tracking, next-action recommendations
- Custom Data Tables — User-defined structured data with AI-determined schemas
- 5 Autonomy Levels — Manual, Assisted, Supervised, Autonomous, Full
- Triggers — Schedule-based (cron), event-driven, condition-based, webhook
- Heartbeats — Natural language to cron conversion for periodic tasks
- Plans — Multi-step autonomous execution with checkpoints and retry logic
- Workflows — Visual multi-step automation with drag-and-drop builder and Workflow Copilot
- Web UI — React 19 + Vite 7 + Tailwind CSS 4 with 41 pages, 60+ components, dark mode
- Telegram Bot — Grammy-based bot with user/chat filtering and message splitting
- WebSocket — Real-time broadcasts for all data mutations
- REST API — 40 route modules with standardized responses, pagination, and error codes
- Sandboxed Code Execution — Docker isolation, VM, Worker threads with 4-layer security
- PII Detection & Redaction — 15+ categories
- Zero-Dependency Crypto — AES-256-GCM + PBKDF2 using only Node.js built-ins
- Authentication — None, API Key, or JWT modes
- Rate Limiting — Sliding window with burst support
- Tamper-Evident Audit — Hash chain verification for audit logs
- TypeScript 5.9 monorepo with Turborepo
- 307 test files with 19,200+ tests (Vitest)
- GitHub Actions CI/CD pipeline
- Docker multi-arch image (amd64 + arm64) published to
ghcr.io/ownpilot/ownpilot - PostgreSQL with pgvector for vector search