{"id":46484625,"url":"https://github.com/crack00r/eidolon","last_synced_at":"2026-03-08T23:16:05.485Z","repository":{"id":341440633,"uuid":"1170058117","full_name":"crack00r/eidolon","owner":"crack00r","description":"Autonomous, self-learning personal AI assistant powered by Claude Code","archived":false,"fork":false,"pushed_at":"2026-03-01T20:36:05.000Z","size":434,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-01T20:43:06.884Z","etag":null,"topics":["ai","ai-assistant","autonomous-agent","bun","claude","personal-assistant","self-learning","tauri","typescript"],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/crack00r.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":"docs/ROADMAP.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-01T16:32:19.000Z","updated_at":"2026-03-01T20:35:52.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/crack00r/eidolon","commit_stats":null,"previous_names":["crack00r/eidolon"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/crack00r/eidolon","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/crack00r%2Feidolon","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/crack00r%2Feidolon/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/crack00r%2Feidolon/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/crack00r%2Feidolon/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/crack00r","download_url":"https://codeload.github.com/crack00r/eidolon/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/crack00r%2Feidolon/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30168624,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-06T07:56:45.623Z","status":"ssl_error","status_checked_at":"2026-03-06T07:55:55.621Z","response_time":250,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","ai-assistant","autonomous-agent","bun","claude","personal-assistant","self-learning","tauri","typescript"],"created_at":"2026-03-06T09:06:27.710Z","updated_at":"2026-03-06T09:06:28.291Z","avatar_url":"https://github.com/crack00r.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Eidolon\n\n[![CI](https://github.com/crack00r/eidolon/actions/workflows/ci.yml/badge.svg)](https://github.com/crack00r/eidolon/actions/workflows/ci.yml)\n[![Release](https://img.shields.io/github/v/release/crack00r/eidolon?include_prereleases\u0026label=release)](https://github.com/crack00r/eidolon/releases)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)\n[![TypeScript](https://img.shields.io/badge/TypeScript-5.0+-3178C6?logo=typescript\u0026logoColor=white)](https://www.typescriptlang.org/)\n[![Bun](https://img.shields.io/badge/Bun-1.1+-fbf0df?logo=bun\u0026logoColor=black)](https://bun.sh/)\n[![Tests](https://img.shields.io/badge/tests-522%20passing-brightgreen)]()\n[![Security Audit](https://img.shields.io/badge/security%20audit-93%2F93%20fixed-brightgreen)]()\n\n**Autonomous, self-learning AI assistant daemon powered by Claude Code CLI.**\n\nEidolon is a personal AI daemon that runs on your server, thinks on its own rhythm, and learns continuously. Instead of the traditional request-response pattern, it operates a continuous cognitive loop, consolidates memory through biologically-inspired \"dreaming\" phases, and autonomously discovers, validates, and implements improvements to itself.\n\n\u003e **Eidolon** (Greek: *eidolon*, \"ideal form\") -- An autonomous intellect that lives in the background, learns continuously, and evolves over time.\n\n---\n\n## Features\n\n- **Cognitive Loop** -- Continuous Perceive-Evaluate-Act-Reflect cycle with adaptive energy budgeting (not cron jobs)\n- **5-Layer Memory** -- Working, episodic, semantic, procedural, and meta-cognitive memory with dreaming-based consolidation\n- **Knowledge Graph** -- ComplEx embeddings over a typed knowledge graph for relational reasoning\n- **Self-Learning** -- Autonomous discovery from configurable sources, safety validation, sandboxed implementation with user approval\n- **Multi-Session Orchestration** -- Concurrent user conversations, background tasks, learning crawls, and voice processing\n- **Voice** -- Local TTS (Qwen3-TTS 1.7B) and STT (faster-whisper) on your own GPU, no cloud APIs needed\n- **Multi-Device** -- Tailscale mesh VPN connects server, desktop, mobile, and GPU worker seamlessly\n- **Gateway** -- WebSocket JSON-RPC with TLS, rate limiting, and token-based authentication\n- **Clients** -- Tauri 2.0 desktop, SwiftUI iOS, SvelteKit web dashboard, Telegram bot (grammy)\n- **Claude Code as Engine** -- Managed subprocess, not a custom agent runtime; proven CLI maintained by Anthropic\n\n## Architecture\n\n```\n                         TAILSCALE MESH\n  ┌──────────────────────────────────────────────────────┐\n  │                                                      │\n  │  Ubuntu Server          Windows PC        MacBook    │\n  │  ┌──────────────┐      ┌──────────┐    ┌─────────┐  │\n  │  │ EIDOLON CORE │      │GPU Worker│    │  Tauri   │  │\n  │  │              │◄────►│(Qwen3TTS)│    │  Client  │  │\n  │  │ Cognitive    │      │  RTX5080 │    │          │  │\n  │  │ Loop         │      └──────────┘    └─────────┘  │\n  │  │ Memory       │                                    │\n  │  │ Learning     │      iPhone/iPad                   │\n  │  │ Claude Code  │      ┌──────────┐                  │\n  │  │ Telegram Bot │      │ iOS App  │                  │\n  │  └──────────────┘      └──────────┘                  │\n  └──────────────────────────────────────────────────────┘\n```\n\n**Core** runs on your server. **Clients** connect from anywhere via Tailscale. **GPU Worker** handles TTS/STT on a dedicated GPU machine. **Telegram** serves as the primary messaging channel.\n\n## Project Structure\n\n```\npackages/core/         # The brain: cognitive loop, memory, learning, channels, gateway, security\npackages/cli/          # CLI: eidolon daemon start|stop|status, config, secrets, doctor, onboard\npackages/protocol/     # Shared types and Zod schemas\npackages/test-utils/   # FakeClaudeProcess and test helpers\napps/desktop/          # Tauri 2.0 + Svelte 5 (Windows, macOS, Linux)\napps/ios/              # Swift/SwiftUI iOS client\napps/web/              # SvelteKit web dashboard\nservices/gpu-worker/   # Python/FastAPI GPU service (TTS/STT)\n```\n\n## Tech Stack\n\n| Component | Technology |\n|---|---|\n| Runtime | TypeScript + Bun |\n| Package Manager | pnpm workspaces |\n| Database | bun:sqlite (3-database split: memory, operational, audit) |\n| Vector Search | sqlite-vec (multilingual-e5-small, ONNX, 384-dim) |\n| Execution Engine | Claude Code CLI (managed subprocess) |\n| Desktop | Tauri 2.0 + Svelte 5 |\n| iOS | Swift / SwiftUI |\n| Web | SvelteKit |\n| GPU Service | Python / FastAPI (Qwen3-TTS 1.7B, faster-whisper) |\n| Telegram | grammy |\n| Networking | Tailscale mesh VPN + optional Cloudflare Tunnel |\n| CI/CD | GitHub Actions + release-please |\n\n## Quick Start\n\n### Prerequisites\n\n| Requirement | Version | Notes |\n|---|---|---|\n| [Bun](https://bun.sh/) | \u003e= 1.1 | Runtime, test runner, bundler |\n| [Node.js](https://nodejs.org/) | \u003e= 22 | pnpm compatibility |\n| [pnpm](https://pnpm.io/) | \u003e= 9 | Package manager |\n| [Claude Code CLI](https://docs.anthropic.com/en/docs/claude-code) | Latest | Execution engine |\n| [Rust](https://rustup.rs/) | Stable | Desktop app (Tauri), optional |\n| [Python](https://www.python.org/) | \u003e= 3.11 | GPU worker, optional |\n\n### Setup\n\n```bash\ngit clone https://github.com/crack00r/eidolon.git\ncd eidolon\npnpm install\npnpm -r build\npnpm -r test          # 522 tests passing\n```\n\n## Development\n\n```bash\npnpm install          # Install all dependencies\npnpm -r build         # Build all packages\npnpm -r test          # Run tests (Bun test runner)\npnpm -r typecheck     # TypeScript type checking\npnpm -r lint          # Biome linter\npnpm -r lint:fix      # Auto-fix lint issues\n```\n\n### Releases\n\nReleases are automated via [release-please](https://github.com/googleapis/release-please). Conventional Commits on `main` trigger version bumps, changelog generation, and GitHub Releases. Platform builds (Windows, macOS, Linux via Tauri; iOS archive) are produced automatically and attached as release assets.\n\n## Security\n\nA comprehensive security audit identified **93 findings** across all severity levels -- all have been fixed:\n\n| Severity | Count | Status |\n|---|---|---|\n| Critical | 4 | Fixed |\n| High | 16 | Fixed |\n| Medium | 44 | Fixed |\n| Low | 29 | Fixed |\n\nKey security measures:\n\n- **Secret store**: AES-256-GCM encryption with scrypt key derivation\n- **Transport**: TLS on all gateway connections\n- **Authentication**: Constant-time token comparison, rate limiting with exponential backoff\n- **Input validation**: Protection against FTS5 injection, SQL injection, path traversal, command injection\n- **Privacy**: GDPR commands (data export, deletion, anonymization), IP anonymization in logs\n- **Deployment**: Systemd hardening, non-root Docker containers\n\nFor vulnerability reporting, see [SECURITY.md](SECURITY.md).\n\n## Documentation\n\n| Document | Description |\n|---|---|\n| [Architecture](docs/design/ARCHITECTURE.md) | 3-database split, resilience patterns, degradation matrix |\n| [Cognitive Loop](docs/design/COGNITIVE_LOOP.md) | Perceive-Evaluate-Act-Reflect cycle |\n| [Memory Engine](docs/design/MEMORY_ENGINE.md) | 5-layer memory, ComplEx KG, hybrid search |\n| [Self-Learning](docs/design/SELF_LEARNING.md) | Autonomous discovery and implementation pipeline |\n| [Claude Integration](docs/design/CLAUDE_INTEGRATION.md) | Claude Code CLI as managed subprocess |\n| [Security](docs/design/SECURITY.md) | Threat model and security architecture |\n| [GPU and Voice](docs/design/GPU_AND_VOICE.md) | TTS/STT with local GPU offloading |\n| [Clients](docs/design/CLIENT_ARCHITECTURE.md) | Desktop, iOS, and web client architecture |\n| [Channels](docs/design/CHANNELS.md) | Telegram and messaging channels |\n| [Testing](docs/design/TESTING.md) | Test strategy and CI pipeline |\n| [Configuration](docs/reference/CONFIGURATION.md) | Full configuration reference |\n| [Roadmap](docs/ROADMAP.md) | Development phases and milestones |\n\n## Project Status\n\nAll 10 development phases (0-9) are complete. The project is in pre-release (`0.x.y`), targeting `1.0.0` for stable release. See the [Roadmap](docs/ROADMAP.md) for details.\n\n## Contributing\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md) for development guidelines and coding conventions.\n\n## License\n\n[MIT](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcrack00r%2Feidolon","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcrack00r%2Feidolon","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcrack00r%2Feidolon/lists"}