mirror of EverMind-AI/EverOS - portable memory layer for AI agents
Go to file
Kendrick-Song bf9b8d1053
docs: align docs with v1.1 and trim README (#311)
Co-authored-by: Jiayao Song <jiayao.song@shanda.com>
2026-06-25 14:59:47 +08:00
.claude chore(release): update EverOS to 1.1.0 (#307) 2026-06-24 23:17:23 +08:00
.github docs(readme): polish launch highlights and banner (#261) 2026-06-06 19:49:59 +08:00
data chore: initialize EverOS 1.0.0 2026-06-06 07:33:17 +08:00
docs docs: align docs with v1.1 and trim README (#311) 2026-06-25 14:59:47 +08:00
scripts chore(release): update EverOS to 1.1.0 (#307) 2026-06-24 23:17:23 +08:00
src/everos chore(release): update EverOS to 1.1.0 (#307) 2026-06-24 23:17:23 +08:00
tests chore(release): update EverOS to 1.1.0 (#307) 2026-06-24 23:17:23 +08:00
use-cases fix(docs): repair dead xrefs in api.md, runbook, skill (#269) 2026-06-08 07:10:56 +08:00
.env.example chore(release): update EverOS to 1.1.0 (#307) 2026-06-24 23:17:23 +08:00
.gitignore chore(release): update EverOS to 1.1.0 (#307) 2026-06-24 23:17:23 +08:00
.gitlint chore: initialize EverOS 1.0.0 2026-06-06 07:33:17 +08:00
.pre-commit-config.yaml chore(release): update EverOS to 1.1.0 (#307) 2026-06-24 23:17:23 +08:00
ACKNOWLEDGMENTS.md docs: fix Discord community links (#294) 2026-06-17 17:16:13 +08:00
CHANGELOG.md docs: align docs with v1.1 and trim README (#311) 2026-06-25 14:59:47 +08:00
CITATION.md chore(release): update EverOS to 1.1.0 (#307) 2026-06-24 23:17:23 +08:00
CLAUDE.md chore: initialize EverOS 1.0.0 2026-06-06 07:33:17 +08:00
CODE_OF_CONDUCT.md chore: initialize EverOS 1.0.0 2026-06-06 07:33:17 +08:00
CONTRIBUTING.md docs: fix Discord community links (#294) 2026-06-17 17:16:13 +08:00
LICENSE chore: initialize EverOS 1.0.0 2026-06-06 07:33:17 +08:00
Makefile chore(release): update EverOS to 1.1.0 (#307) 2026-06-24 23:17:23 +08:00
NOTICE chore: initialize EverOS 1.0.0 2026-06-06 07:33:17 +08:00
QUICKSTART.md docs: align docs with v1.1 and trim README (#311) 2026-06-25 14:59:47 +08:00
README.md docs: align docs with v1.1 and trim README (#311) 2026-06-25 14:59:47 +08:00
README.zh-CN.md docs(readme): sync chinese 1.1 feature positioning (#309) 2026-06-24 23:28:48 +08:00
SECURITY.md chore(release): update EverOS to 1.1.0 (#307) 2026-06-24 23:17:23 +08:00
config.example.toml chore(release): update EverOS to 1.1.0 (#307) 2026-06-24 23:17:23 +08:00
pyproject.toml chore(release): update EverOS to 1.1.0 (#307) 2026-06-24 23:17:23 +08:00
uv.lock chore(release): update EverOS to 1.1.0 (#307) 2026-06-24 23:17:23 +08:00

README.md

EverOS

Local-first markdown memory framework for AI agents and user chats — lightweight, dev-friendly, small-team.

License: Apache 2.0 Python 3.12+


What is EverOS

EverOS is an open-source Python framework that turns conversations, agent trajectories, and files into structured, retrievable, evolving long-term memory for AI agents and user chats. Designed for lightweight local deployments (small teams, individual developers), with three core principles:

  1. Markdown as Source of Truth — All memory persists as plain .md files. Open, edit, grep, version with Git, view in Obsidian. No black-box database lock-in.
  2. Lightweight three-piece storageMarkdown files (truth) + SQLite (state/queue) + LanceDB (vector + BM25 + scalar). No MongoDB / Elasticsearch / Milvus / Redis / Kafka required.
  3. EverAlgo as pure algorithm library — Memory extraction algorithms are decoupled into a separate library; this project orchestrates and persists.

Architecture at a glance

┌───────────────────────────────────────────────┐
│  entrypoints/  (CLI + HTTP API)                │  presentation
├───────────────────────────────────────────────┤
│  service/      (use cases: memorize/retrieve)  │  application
├───────────────────────────────────────────────┤
│  memory/       (extract + search + cascade)    │  domain
├───────────────────────────────────────────────┤
│  infra/        (markdown / sqlite / lancedb)   │  infrastructure
└───────────────────────────────────────────────┘
        ↑                    ↑
   component/            core/
   (LLM/Embedding)       (observability/lifespan)

DDD 5 layers, single-direction dependency. See docs/architecture.md.

Quick start

Install as a package

uv pip install everos               # or: pip install everos

# Generate starter config (model defaults bundled inside the wheel)
everos init                          # writes ~/.everos/everos.toml + ome.toml (use --root to relocate)
# Edit ~/.everos/everos.toml and fill the api_key fields (see comments inside).

everos --help
everos server start

everos init writes two TOML files into the memory root (~/.everos by default; relocate with --root): everos.toml (app settings + provider credentials) and ome.toml (offline-engine schedules). everos server start reads <root>/everos.toml and exits with an error if it is missing. Any setting can also be overridden by an EVEROS_* environment variable (e.g. EVEROS_LLM__API_KEY). The endpoint stack is OpenAI-protocol compatible (OpenAI / OpenRouter / vLLM / Ollama / DeepInfra …) — set the base_url field in each provider section of everos.toml to point at any of them.

Multi-modal (optional)

To ingest non-text content (image / pdf / audio / office documents) through /api/v1/memory/add content items, install the optional extra:

uv pip install 'everos[multimodal]'   # or: pip install 'everos[multimodal]'

This pulls in everalgo-parser (with the [svg] bundle for SVG support via cairosvg) and wires up the multimodal LLM client (the [multimodal] section in everos.toml, defaults to google/gemini-3-flash-preview).

Office document support requires LibreOffice as a system dependency. The parser shells out to soffice (LibreOffice's headless renderer) to convert .doc / .docx / .ppt / .pptx / .xls / .xlsx to PDF before feeding the result into the multimodal LLM. Without LibreOffice, office uploads return HTTP 503 (CAPABILITY_UNAVAILABLE) with a clear error message; PDF / image / audio / HTML / email parsing is unaffected.

Install on the host before serving office documents:

brew install --cask libreoffice              # macOS
sudo apt-get install -y libreoffice          # Debian / Ubuntu

For the full multimodal contract (supported modalities, uri vs base64, config, error semantics, end-to-end curl examples), see docs/multimodal.md.

For a step-by-step walkthrough (add a conversation → flush → search → read the markdown), see QUICKSTART.md.

Develop locally

git clone https://github.com/EverMind-AI/EverOS.git
cd EverOS
uv sync                              # creates ./.venv and installs deps
source .venv/bin/activate            # — or skip activation and prefix every command with `uv run`
everos init                         # fill in the [llm] api_key in the generated everos.toml

everos --help
make test

Storage layout

~/.everos/
├── default_app/                  # app_id  ("default" → "default_app" on disk)
│   └── default_project/          # project_id ("default" → "default_project")
│       ├── users/<user_id>/
│       │   ├── user.md           # profile
│       │   ├── episodes/         # daily-log episodes (visible)
│       │   ├── .atomic_facts/    # nested facts (dotfile-hidden)
│       │   └── .foresights/      # predictive memory (dotfile-hidden)
│       └── agents/<agent_id>/
│           ├── agent.md
│           ├── .cases/           # one task case per entry
│           └── skills/           # named procedural memories
├── .index/                       # derived indexes (rebuildable from md)
│   ├── sqlite/system.db          # state + queue + audit
│   └── lancedb/*.lance/          # vector + BM25 + scalar
└── .tmp/                         # transient working files

Open any <app>/<project>/users/<user_id>/ folder in Obsidian — your agent's brain is just files. The dotfile directories (.atomic_facts/, .foresights/, .cases/) stay hidden by default so the visible folder is the user-facing memory surface, while extracted derivatives sit quietly alongside.

Features

  • Hybrid retrieval: BM25 + vector (HNSW/IVF-PQ) + scalar filter, single-query in LanceDB
  • Cascade index sync: edit a .md → file watcher → entry-level diff → LanceDB sync, sub-second
  • Multi-source extraction: conversations / agent trajectories / file knowledge
  • Dual-track memory: user-track (Episodes / Profiles) + agent-track (Cases / Skills)
  • Async-first: full asyncio, single event loop
  • Multi-modal: text + small image / audio inline; large media via S3/OSS reference

Project structure

everos/                        # repo root
├── src/everos/                # main package (src layout)
│   ├── entrypoints/           # cli + api
│   ├── service/               # use case orchestration
│   ├── memory/                # domain: extract + search + cascade + prompt_slots
│   ├── infra/                 # storage: markdown + lancedb + sqlite
│   ├── component/             # cross-cutting: llm / embedding / config / utils
│   ├── core/                  # runtime: observability / lifespan / context
│   └── config/                # configuration data + Settings schema
├── tests/                     # unit / integration / golden / fixtures
├── docs/                      # design docs
└── .claude/                   # team-shared rules + skills (auto-loaded by Claude Code)

Documentation

Use Cases

See use-cases/README.md for the full gallery.

Status

Stable (v1.1.0) — Released on PyPI; the v1 API is stable.

License

Apache License 2.0 — see NOTICE for third-party attributions.

Citation

If you use EverOS in research, see CITATION.md.


Acknowledgments: This project builds on prior research and tooling — see ACKNOWLEDGMENTS.md.