self-hosted 5 min read

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.

By
Share: X in
EchOS – Self-hosted AI knowledge base dashboard

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.

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 localhost or 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