{"id":45365030,"url":"https://github.com/albinotonnina/echos","last_synced_at":"2026-04-07T12:00:38.280Z","repository":{"id":338710854,"uuid":"1158809174","full_name":"albinotonnina/echos","owner":"albinotonnina","description":"Your personal AI knowledge system — self-hosted, agent-driven, and always private.","archived":false,"fork":false,"pushed_at":"2026-04-05T15:13:05.000Z","size":4350,"stargazers_count":43,"open_issues_count":3,"forks_count":4,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-04-05T16:25:26.323Z","etag":null,"topics":["agent","agentic","ai","personal-assistant","second-brain"],"latest_commit_sha":null,"homepage":"https://www.echos.sh","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/albinotonnina.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":null,"patreon":null,"open_collective":null,"ko_fi":"albinotonnina","tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"lfx_crowdfunding":null,"polar":null,"buy_me_a_coffee":null,"thanks_dev":null,"custom":null}},"created_at":"2026-02-15T23:55:49.000Z","updated_at":"2026-04-05T11:39:40.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/albinotonnina/echos","commit_stats":null,"previous_names":["albinotonnina/echos"],"tags_count":49,"template":false,"template_full_name":null,"purl":"pkg:github/albinotonnina/echos","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/albinotonnina%2Fechos","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/albinotonnina%2Fechos/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/albinotonnina%2Fechos/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/albinotonnina%2Fechos/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/albinotonnina","download_url":"https://codeload.github.com/albinotonnina/echos/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/albinotonnina%2Fechos/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31511784,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-07T03:10:19.677Z","status":"ssl_error","status_checked_at":"2026-04-07T03:10:13.982Z","response_time":105,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5: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":["agent","agentic","ai","personal-assistant","second-brain"],"created_at":"2026-02-21T14:11:13.738Z","updated_at":"2026-04-07T12:00:38.271Z","avatar_url":"https://github.com/albinotonnina.png","language":"TypeScript","funding_links":["https://ko-fi.com/albinotonnina"],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n\u003cimg src=\"assets/symbol.png\" alt=\"EchOS\" width=\"120\" /\u003e\n\n# EchOS\n\n**Your personal AI knowledge system — self-hosted, agent-driven, and always private.**\n\n[![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)\n[![Node.js](https://img.shields.io/badge/node-%3E%3D20-brightgreen)](https://nodejs.org)\n[![TypeScript](https://img.shields.io/badge/TypeScript-strict-blue?logo=typescript)](https://www.typescriptlang.org)\n[![Version](https://img.shields.io/github/v/release/albinotonnina/echos?sort=semver)](https://github.com/albinotonnina/echos/releases)\n\n**[→ Full documentation at docs.echos.sh](https://docs.echos.sh)**\n\n\u003c/div\u003e\n\n---\n\n\u003e [!NOTE]\n\u003e EchOS is a personal project — built for one user, deployed on your own infrastructure. It is intentionally not multi-tenant.\n\n\u003cdiv align=\"center\"\u003e\n\n\u003cimg src=\"assets/telegram-demo.png\" alt=\"EchOS Telegram conversation\" width=\"100%\"\u003e\n\n*Save articles, search your knowledge, get reminders — all through natural conversation.*\n\n\u003ca href=\"https://www.youtube.com/watch?v=D3QCQXqNewU\"\u003e\n  Youtube DEMO\u003cbr /\u003e\n  \u003cimg src=\"assets/demo-cover.jpg\" alt=\"EchOS One Shot Demo\" width=\"800\"\u003e\n\u003c/a\u003e\n\n\u003cbr/\u003e\n\n\u003c/div\u003e\n\n---\n\n## What it feels like\n\nYou're walking and a thought hits. You open Telegram and say it out loud. Thirty seconds later it's in your knowledge base — transcribed, categorized, tagged, searchable. You didn't open an app. You didn't fill a form. You didn't think about where to put it.\n\nThat's the thing EchOS is trying to solve. Not the storage. The friction.\n\n```\nYou:    Save this for me → [pastes article URL]\nEchOS:  Saved. \"How Rust handles memory safety\" — tagged as rust, programming.\n        I pulled the key points if you want a summary.\n\nYou:    What do I know about memory management?\nEchOS:  Found 7 notes. The Rust piece you just saved, two older ones on GC pauses,\n        a voice note from last Tuesday where you were ranting about malloc...\n\nYou:    Write a short post about it — my style, technical but readable\nEchOS:  [drafts a post grounded in your actual notes, in your voice]\n\nYou:    Save it.\nEchOS:  Done. You can open it in Obsidian whenever you want.\n```\n\nNo commands to memorize. No schemas to design. No dashboards to maintain.\n\n---\n\n## Why self-hosted\n\nYour notes are yours. They live on your server, in plain Markdown files you can open in Obsidian right now. No subscription. No sync fees. No vendor deciding what to do with your thinking.\n\nThe only outbound calls are to the AI APIs you configure — and only when you ask it to do something.\n\n---\n\n## The main things it does\n\n**Capture without friction.** Text, URLs, voice messages, photos — through Telegram, the terminal, or the web. It figures out what to do with them.\n\n**Search that actually understands you.** Not keyword matching. Hybrid full-text and semantic search: ask it a question the way you'd ask a person, and it finds what you meant.\n\n**Write in your voice.** Tell it to write a blog post, a thread, an email. It reads your notes for source material and matches the way you actually write — not generic AI prose.\n\n**Obsidian-compatible, always.** Every note is a plain `.md` file. Open `$ECHOS_HOME/knowledge` (default: `~/echos/knowledge`) in Obsidian and your entire knowledge base is right there. Live sync, bidirectional.\n\n**Remembers how you want it to talk.** Tell it to be concise, warmer, more technical. It adapts immediately and stays that way.\n\n---\n\n## Get started\n\n**macOS (Homebrew)**\n\n```bash\nbrew tap albinotonnina/echos\nbrew update\nbrew install echos\nechos-setup          # browser-based setup wizard\nbrew services start echos\n```\n\n**One-liner (macOS + Linux)**\n\n```bash\ncurl -sSL https://raw.githubusercontent.com/albinotonnina/echos/main/install.sh | bash\n```\n\n**Manual**\n\n```bash\ngit clone https://github.com/albinotonnina/echos.git \u0026\u0026 cd echos\npnpm install \u0026\u0026 pnpm build\npnpm wizard         # opens http://localhost:3456 with guided setup\npnpm start\n```\n\nYou'll need an LLM API key — either Anthropic (`ANTHROPIC_API_KEY`, pay-as-you-go, not a Claude subscription) or any other provider supported by pi-ai (`LLM_API_KEY`). Custom OpenAI-compatible endpoints (DeepInfra, local Ollama, etc.) are supported via `LLM_BASE_URL`. Everything else is optional.\n\n**[→ Full setup guide at docs.echos.sh/distribution](https://docs.echos.sh/distribution)**\n\n---\n\n## Documentation\n\nEverything you need to go deeper is at **[docs.echos.sh](https://docs.echos.sh)**.\n\n| | |\n|---|---|\n| [Architecture](https://docs.echos.sh/architecture) | How the pieces fit together |\n| [Deployment](https://docs.echos.sh/deployment) | VPS, Docker, nginx, systemd |\n| [Security](https://docs.echos.sh/security) | What EchOS does and doesn't do with your data |\n| [Knowledge Import](https://docs.echos.sh/knowledge-import) | Bring in your Obsidian vault or Notion export |\n| [Writing](https://docs.echos.sh/writing) | Voice profiles and content generation |\n| [Plugins](https://docs.echos.sh/plugins) | YouTube, articles, and building your own |\n| [Troubleshooting](https://docs.echos.sh/troubleshooting) | When things go sideways |\n\n---\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falbinotonnina%2Fechos","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falbinotonnina%2Fechos","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falbinotonnina%2Fechos/lists"}