EchOS – Self-Hosted AI Knowledge Base via Telegram
EchOS captures notes, URLs, voice messages, and photos through Telegram and surfaces them with hybrid semantic search. Self-hosted, MIT-licensed, no subscription.
TL;DR
TL;DR: EchOS is a self-hosted AI knowledge manager you talk to through Telegram — paste a URL, dictate a note, or snap a photo and it instantly organizes everything with semantic search. No subscription, your data stays on your server.
Source and Accuracy Notes
⚠️ This section is MANDATORY. All links must be verified from actual source, not guessed.
- Project page: echos.sh — verified live, redirects to docs
- Documentation: docs.echos.sh — verified live
- Source repository: github.com/albinotonnina/echos — README read in full
- License: MIT (verified via LICENSE file in repo)
- HN launch thread: news.ycombinator.com/item?id=47151273
What Is EchOS?
EchOS is a personal AI knowledge system built for one user. The core idea: capture anything — text, URLs, voice notes, photos — with zero friction through Telegram, and retrieve it later using natural language. All data lives in plain Markdown files on your own server. There is no multi-tenant cloud, no vendor lock-in, and no subscription.
The README describes it as trying to solve “not the storage, the friction.” Instead of opening an app and filling a form, you just message Telegram and EchOS handles the rest — transcribing, tagging, categorizing, and storing.
Key capabilities from the README:
- Capture anything — text, URLs, voice messages, photos through Telegram, the terminal, or the web
- Semantic search — hybrid full-text and semantic search with temporal decay and hotness scoring; asks a question the way you would ask a person
- Write in your voice — drafts blog posts, threads, emails using your actual notes as source material
- Obsidian-compatible — notes stored as plain Markdown, openable directly in Obsidian
Setup Workflow
Prerequisites
- Node.js 20 or higher
- A Telegram bot token (created via @BotFather)
- A machine to run it on (VPS, home server, or a spare Raspberry Pi)
Step 1: Install EchOS
git clone https://github.com/albinotonnina/echos.git
cd echos
npm install
Step 2: Configure your Telegram bot
Create a .env file in the project root:
TELEGRAM_BOT_TOKEN=your_telegram_bot_token_here
OPENAI_API_KEY=your_openai_api_key_here
EchOS works with any LLM provider — swap OPENAI_API_KEY for your provider of choice in the config.
Step 3: Start the server
npm run dev
Point your Telegram bot webhook to your server’s public URL. The server exposes endpoints for receiving Telegram updates and serving the web interface.
Step 4: Connect and capture
Message your Telegram bot. Try:
Save this for me → https://example.com/article
EchOS will reply with a confirmation, extracted key points, and auto-tag it.
Deeper Analysis
Architecture
EchOS is a Node.js + TypeScript application. It receives Telegram messages via webhook, processes them through an AI pipeline (transcription for voice, content extraction for URLs, OCR for images), and stores results as Markdown files in a configurable directory. The search layer uses a hybrid approach — BM25 for keyword matching plus semantic embeddings for meaning-based retrieval.
The project is intentionally single-tenant. The README explicitly notes it was “built for one user” and multi-tenancy was never a design goal.
Search benchmarks
The docs claim competitive benchmark results versus other self-hosted knowledge tools. The actual numbers are on docs.echos.sh/benchmarks. Results are worth reviewing before assuming EchOS outperforms established players like Logseq or Obsidian with their own plugin ecosystems.
Privacy model
The only outbound API calls are to the LLM provider you configure. Nothing is sent to EchOS’s authors or any third party. If you run it with a local model (Ollama on the same machine, for example), the privacy boundary is the machine itself.
Practical Evaluation Checklist
- [ ] Telegram bot created and webhook configured
- [ ] First URL capture works and Markdown file appears
- [ ] Voice note transcribed correctly
- [ ] Semantic search returns relevant results for a natural-language query
- [ ] Notes are readable in Obsidian without EchOS running
- [ ] Memory usage stable after 24 hours
Security Notes
- Telegram bot token lives in
.env— never commit this file - Markdown notes are stored locally; protect the directory with standard Unix permissions
- No authentication on the web interface by default — bind to
localhostor put behind a reverse proxy with auth if exposing publicly - Source is on GitHub; audit the Telegram webhook verification logic before running on a public server
FAQ
Q: Is this production-ready? A: The project is actively maintained (latest release in 2025) but was built as a personal tool. Treat it accordingly — back up your Markdown files and test updates before applying to a mission-critical setup.
Q: Can I use a local LLM instead of OpenAI? A: Yes. The config accepts any LLM provider compatible with the chat completions API format. You can point it to Ollama, LM Studio, or any OpenAI-compatible endpoint.
Q: How does it compare to Obsidian with the Telegram plugin? A: Obsidian gives you a powerful local graph and file system. EchOS adds a structured AI pipeline on top — automatic tagging, transcription, semantic ranking, and voice capture. They can be complementary: EchOS for intake, Obsidian for long-form writing.
Q: Does it work without Telegram? A: Yes. The README mentions a web interface and terminal input in addition to Telegram. Telegram is the primary UX but not the only way to interact.
Conclusion
EchOS solves the capture problem for personal knowledge management. Instead of opening an app, the friction is a Telegram message. For developers who live in chat and want their notes in plain Markdown, it is a natural fit. The MIT license and self-hosted model mean there is no vendor risk.
If you want to try it, the setup takes about 10 minutes on a machine with Node.js 20 and a Telegram bot. Start with one URL capture, then a voice note, and decide whether the workflow suits you.
Source: github.com/albinotonnina/echos | Docs: docs.echos.sh
Related Posts
dev-tools
AgentMesh – Define AI Agent Teams in YAML
Define multi-agent AI workflows in YAML and run them locally with one command. AgentMesh brings Docker Compose patterns to AI agent orchestration.
5/28/2026
ai-setup
IonRouter – Fast Low-Cost AI Inference API
IonRouter is a YC W26 inference API routing open-source and fine-tuned models via an OpenAI-compatible endpoint, built on a C++ runtime optimized for GH200.
5/28/2026
dev-tools
Cicada – FOSS CI/CD That Replaces YAML With a Real Language
Cicada replaces GitHub Actions and GitLab CI YAML configs with a custom functional DSL, letting you write pipelines using variables, functions, and shell.
5/29/2026