Ech0 – An open-source, self-hosted lightweight publishing platform for personal idea sharing.
See the codeA self-hosted personal microblog where your timeline can be shared, discussed, and fully owned.
Tools like Memos are great for capturing quick thoughts. Ech0 is built for what comes next: publishing those ideas to a personal timeline that others can follow and interact with. Run it on your own server, keep full control of your content, and keep a personal space that still feels connected through optional comments and sharing. It stays lightweight, easy to deploy, and fully open-source.
Great fit if you want to:
Probably not for you if you need:

docker run -d \
--name ech0 \
-p 6277:6277 \
-v /opt/ech0/data:/app/data \
-e JWT_SECRET="Hello Echos" \
sn0wl1n/ech0:latest
Then open http://ip:6277:
See Quick Deployment for Docker Compose and Helm options.
Detailed instructions for Docker Compose, script install, Kubernetes (Helm), and upgrading an existing instance live in DEPLOYMENT.md.
For the simplest path, the Try in 60 Seconds snippet above is enough to get a single Docker container running.
What is Ech0? Ech0 is a lightweight open-source self-hosted platform designed for quickly publishing and sharing personal thoughts, writing, and links. It provides a clean interface and distraction-free experience, with your data remaining under your control.
What is Ech0 not? Ech0 is not a traditional professional note-taking app (such as Obsidian or Notion). Its core usage is closer to a social feed / microblog stream.
Is Ech0 free? Yes. Ech0 is fully free and open source under AGPL-3.0, with no ads, tracking, subscriptions, or service lock-in.
How do I back up and import data?
Ech0 supports data recovery/migration through "Snapshot Export" and "Migration Import". At deployment level, regularly back up your mapped data directory (for example /opt/ech0/data). By default, core data is stored in the local database; if object storage is enabled, media assets are written to the configured storage backend.
Does Ech0 support RSS? Yes. Ech0 supports RSS subscriptions so you can follow updates in RSS readers.
Why does publishing fail with "contact administrator"? Publishing is restricted to privileged accounts by default. During initialization, the first account becomes Owner (with management privileges). Regular users cannot publish until explicitly granted permission by a privileged account. If this is your first setup, review Try in 60 Seconds and confirm which account is Owner.
Why is there no detailed permission matrix? Ech0 currently uses a lightweight role model (Owner / Admin / regular user) to keep operation simple and predictable. The permission model will continue to evolve based on community feedback.
Why can't others see their Connect avatar?
Set your current instance URL in System Settings - Service URL, for example https://memo.sn0w.fyi/ (must include http:// or https://).
What is the MetingAPI option in settings? It is the API endpoint used by music cards to resolve playable stream metadata. You can provide your own trusted endpoint; when left empty, Ech0 falls back to a default resolver endpoint. For production, a self-controlled endpoint is recommended.
Why does a newly added Connect show only partial results? The backend tries to fetch instance information for all Connect entries. If an instance is down or unreachable, it is discarded, and only valid/accessible Connect data is returned to the frontend.
How do I enable comments?
Enable comments in the panel comment manager, then configure moderation and captcha toggles as needed. Ech0 now embeds gocap for captcha verification, so no standalone captcha service deployment is required.
How do I configure S3 storage?
Fill in provider, endpoint, bucket, access key, secret key, and related fields in storage settings. It is recommended to provide endpoint without http:// or https://. If media is accessed directly by browsers, ensure objects are readable through your chosen policy (for example public-read or equivalent CDN/gateway setup).
How do I enable passkey login?
In SSO - Passkey, configure WebAuthn RP ID and WebAuthn Origins. After saving and seeing "Passkey ready", follow browser prompts to bind biometrics or a security key.
Official statement on third-party integrations Third-party integration platforms or services that are not officially authorized by Ech0 are outside the official support scope. Any security incidents, data loss, account issues, or other risks caused by using such services are the sole responsibility of the user and the third-party provider.
How do I post comments via a third-party integration (AI / automation)?
Ech0 provides a dedicated integration comment endpoint at POST /api/comments/integration that bypasses captcha and form-token verification. Create an access token with the comment:write scope and integration audience from "Access Token" management, then include it in the Authorization: Bearer <token> header. For request body fields and responses, use the OpenAPI docs served by your instance at /swagger/index.html (for local development, typically http://localhost:6277/swagger/index.html). This endpoint has its own rate limits, and comments are tagged with source=integration so they are identifiable in the admin panel.
Where can I find detailed documentation on local vs S3 storage rules, object keys, and migration?
See the in-repo Storage migration guide. It explains how flat key values map to on-disk paths and S3 object keys (including schema.Resolve and PathPrefix), how stored File.url snapshots relate to the UI, the difference between static /api/files access and authenticated stream routes, and practical guidance for switching S3 providers or moving data between local disk and object storage.
1065435773Ech0 Hub is a public directory that merges timelines from listed Ech0 instances. For step-by-step instructions on registering your public instance, see hub/README.md.
| Official QQ Community | Other Groups |
|---|---|
![]() | N/A |
Ech0 is licensed under AGPL-3.0-or-later.
If you modify Ech0 and make it available to users over a network, including as a hosted service, you must provide the complete corresponding source code of your modified version under AGPL-3.0-or-later.
You must preserve copyright notices, license notices, and source-code access information in source and binary distributions, container images, hosted services, and modified deployments.
If you want to use Ech0 in a proprietary product, closed-source hosted service, white-label deployment, or any use case where you do not want to release your modifications, request a commercial license.
Governance
Development
Local setup, environment requirements, and front-/back-end integration are documented in docs/dev/development.md. For higher-level architecture and conventions, see CLAUDE.md and CONTRIBUTING.md. An interactive architecture diagram is available at ech0.app/arch.
🌟 If you like Ech0, please give the project a Star! 🚀
Ech0 is fully open-source and free. Ongoing maintenance and improvements rely on community support. If this project helps you, sponsorship is always appreciated. Donate via the QR code below and leave your GitHub name in the note — your contribution will be added to the sponsor wall.
| Platform | QR Code |
|---|---|
| Afdian | ![]() |
A huge thanks to all sponsors, contributors, and users — see SPONSOR.md for the full sponsor wall.
Special thanks to the LinuxDO community for their recognition and support.
███████╗ ██████╗ ██╗ ██╗ ██████╗
██╔════╝ ██╔════╝ ██║ ██║ ██╔═████╗
█████╗ ██║ ███████║ ██║██╔██║
██╔══╝ ██║ ██╔══██║ ████╔╝██║
███████╗ ╚██████╗ ██║ ██║ ╚██████╔╝
╚══════╝ ╚═════╝ ╚═╝ ╚═╝ ╚═════╝
Go module
Latest release
Releases this year
7,554 followers · starred Dec 2025
1,685 followers · starred Dec 2025
1,537 followers · starred Jul 2025
42 followers · starred Aug 2025
Ech0 – An open-source, self-hosted lightweight publishing platform for personal idea sharing.
See the codeA self-hosted personal microblog where your timeline can be shared, discussed, and fully owned.
Tools like Memos are great for capturing quick thoughts. Ech0 is built for what comes next: publishing those ideas to a personal timeline that others can follow and interact with. Run it on your own server, keep full control of your content, and keep a personal space that still feels connected through optional comments and sharing. It stays lightweight, easy to deploy, and fully open-source.
Great fit if you want to:
Probably not for you if you need:

docker run -d \
--name ech0 \
-p 6277:6277 \
-v /opt/ech0/data:/app/data \
-e JWT_SECRET="Hello Echos" \
sn0wl1n/ech0:latest
Then open http://ip:6277:
See Quick Deployment for Docker Compose and Helm options.
Detailed instructions for Docker Compose, script install, Kubernetes (Helm), and upgrading an existing instance live in DEPLOYMENT.md.
For the simplest path, the Try in 60 Seconds snippet above is enough to get a single Docker container running.
What is Ech0? Ech0 is a lightweight open-source self-hosted platform designed for quickly publishing and sharing personal thoughts, writing, and links. It provides a clean interface and distraction-free experience, with your data remaining under your control.
What is Ech0 not? Ech0 is not a traditional professional note-taking app (such as Obsidian or Notion). Its core usage is closer to a social feed / microblog stream.
Is Ech0 free? Yes. Ech0 is fully free and open source under AGPL-3.0, with no ads, tracking, subscriptions, or service lock-in.
How do I back up and import data?
Ech0 supports data recovery/migration through "Snapshot Export" and "Migration Import". At deployment level, regularly back up your mapped data directory (for example /opt/ech0/data). By default, core data is stored in the local database; if object storage is enabled, media assets are written to the configured storage backend.
Does Ech0 support RSS? Yes. Ech0 supports RSS subscriptions so you can follow updates in RSS readers.
Why does publishing fail with "contact administrator"? Publishing is restricted to privileged accounts by default. During initialization, the first account becomes Owner (with management privileges). Regular users cannot publish until explicitly granted permission by a privileged account. If this is your first setup, review Try in 60 Seconds and confirm which account is Owner.
Why is there no detailed permission matrix? Ech0 currently uses a lightweight role model (Owner / Admin / regular user) to keep operation simple and predictable. The permission model will continue to evolve based on community feedback.
Why can't others see their Connect avatar?
Set your current instance URL in System Settings - Service URL, for example https://memo.sn0w.fyi/ (must include http:// or https://).
What is the MetingAPI option in settings? It is the API endpoint used by music cards to resolve playable stream metadata. You can provide your own trusted endpoint; when left empty, Ech0 falls back to a default resolver endpoint. For production, a self-controlled endpoint is recommended.
Why does a newly added Connect show only partial results? The backend tries to fetch instance information for all Connect entries. If an instance is down or unreachable, it is discarded, and only valid/accessible Connect data is returned to the frontend.
How do I enable comments?
Enable comments in the panel comment manager, then configure moderation and captcha toggles as needed. Ech0 now embeds gocap for captcha verification, so no standalone captcha service deployment is required.
How do I configure S3 storage?
Fill in provider, endpoint, bucket, access key, secret key, and related fields in storage settings. It is recommended to provide endpoint without http:// or https://. If media is accessed directly by browsers, ensure objects are readable through your chosen policy (for example public-read or equivalent CDN/gateway setup).
How do I enable passkey login?
In SSO - Passkey, configure WebAuthn RP ID and WebAuthn Origins. After saving and seeing "Passkey ready", follow browser prompts to bind biometrics or a security key.
Official statement on third-party integrations Third-party integration platforms or services that are not officially authorized by Ech0 are outside the official support scope. Any security incidents, data loss, account issues, or other risks caused by using such services are the sole responsibility of the user and the third-party provider.
How do I post comments via a third-party integration (AI / automation)?
Ech0 provides a dedicated integration comment endpoint at POST /api/comments/integration that bypasses captcha and form-token verification. Create an access token with the comment:write scope and integration audience from "Access Token" management, then include it in the Authorization: Bearer <token> header. For request body fields and responses, use the OpenAPI docs served by your instance at /swagger/index.html (for local development, typically http://localhost:6277/swagger/index.html). This endpoint has its own rate limits, and comments are tagged with source=integration so they are identifiable in the admin panel.
Where can I find detailed documentation on local vs S3 storage rules, object keys, and migration?
See the in-repo Storage migration guide. It explains how flat key values map to on-disk paths and S3 object keys (including schema.Resolve and PathPrefix), how stored File.url snapshots relate to the UI, the difference between static /api/files access and authenticated stream routes, and practical guidance for switching S3 providers or moving data between local disk and object storage.
1065435773Ech0 Hub is a public directory that merges timelines from listed Ech0 instances. For step-by-step instructions on registering your public instance, see hub/README.md.
| Official QQ Community | Other Groups |
|---|---|
![]() | N/A |
Ech0 is licensed under AGPL-3.0-or-later.
If you modify Ech0 and make it available to users over a network, including as a hosted service, you must provide the complete corresponding source code of your modified version under AGPL-3.0-or-later.
You must preserve copyright notices, license notices, and source-code access information in source and binary distributions, container images, hosted services, and modified deployments.
If you want to use Ech0 in a proprietary product, closed-source hosted service, white-label deployment, or any use case where you do not want to release your modifications, request a commercial license.
Governance
Development
Local setup, environment requirements, and front-/back-end integration are documented in docs/dev/development.md. For higher-level architecture and conventions, see CLAUDE.md and CONTRIBUTING.md. An interactive architecture diagram is available at ech0.app/arch.
🌟 If you like Ech0, please give the project a Star! 🚀
Ech0 is fully open-source and free. Ongoing maintenance and improvements rely on community support. If this project helps you, sponsorship is always appreciated. Donate via the QR code below and leave your GitHub name in the note — your contribution will be added to the sponsor wall.
| Platform | QR Code |
|---|---|
| Afdian | ![]() |
A huge thanks to all sponsors, contributors, and users — see SPONSOR.md for the full sponsor wall.
Special thanks to the LinuxDO community for their recognition and support.
███████╗ ██████╗ ██╗ ██╗ ██████╗
██╔════╝ ██╔════╝ ██║ ██║ ██╔═████╗
█████╗ ██║ ███████║ ██║██╔██║
██╔══╝ ██║ ██╔══██║ ████╔╝██║
███████╗ ╚██████╗ ██║ ██║ ╚██████╔╝
╚══════╝ ╚═════╝ ╚═╝ ╚═╝ ╚═════╝
Go module
Latest release
Releases this year
7,554 followers · starred Dec 2025
1,685 followers · starred Dec 2025
1,537 followers · starred Jul 2025
42 followers · starred Aug 2025