{
    "stable": true,
    "versions": {
        "0.0.3": {
            "manifest": {
                "id": "io.timconsidine.everos",
                "title": "EverOS",
                "author": "EverMind.AI",
                "description": "EverOS is a portable memory layer for every AI agent — local-first, Markdown-native, user-owned, and self-evolving across apps, tools, and workflows.\n\nAt its core, EverOS turns conversations, agent trajectories, and files into structured, retrievable, evolving long-term memory. It stores everything as readable, editable, git-friendly Markdown files (the canonical source of truth), backed by a lightweight three-piece local stack: Markdown + SQLite (state/queue) + LanceDB (vector similarity + BM25 keyword search). No MongoDB, Elasticsearch, Milvus, or Redis required.\n\nTwo memory tracks are first-class citizens:\n- **User memory**: Profiles, Episodes, Atomic Facts, and Foresights — what happened and who the user is.\n- **Agent memory**: Cases (completed task trajectories) that self-distil into reusable Skills shared across your agent team — giving agents procedural memory that gets better with use.\n\nThe FastAPI HTTP API is OpenAI-protocol compatible and drops into any existing agent loop. Compatible integrations include Claude Code plugin, OpenClaw skill, Codex, Hermes, MCP server, OpenAI SDK, and Anthropic SDK. Retrieval is orthogonal: scope every query by user_id, agent_id, app_id, project_id, and session_id.\n\nEverOS achieves 93%+ retrieval accuracy on the LoCoMo benchmark with p95 query latency under 500 ms, reducing token usage by ~90% vs loading the entire context window.\n\nA background offline-memory-evolution (OME) scheduler runs in-process: reflection merges episode clusters and refines profiles/skills between sessions, skill distillation promotes repeated Case patterns into Skills, and a cascade file watcher keeps the derived indexes in sync whenever you edit a Markdown source file directly.\n",
                "tagline": "portable memory layer for every AI agent: local-first, Markdown-native, user-owned, and self-evolving across apps, tools, and workflows",
                "version": "0.0.3",
                "upstreamVersion": "1.2.3",
                "healthCheckPath": "/health",
                "httpPort": 8000,
                "memoryLimit": 2147483648,
                "addons": {
                    "localstorage": {}
                },
                "manifestVersion": 2,
                "postInstallMessage": "## Welcome to EverOS\n\nEverOS is running on this Cloudron instance. Here is how to use it.\n\n---\n\n### 1. Retrieve your API key\n\nEvery API call (except `/health` and the docs pages) requires a Cloudron-generated API key. The key was created on first install and persisted at `/app/data/api_key.txt`. To view it:\n\n- Open a **Web Terminal** for this app and run:\n  ```\n  cat /app/data/api_key.txt\n  ```\n- Copy the value. Send it with every request as header `X-API-Key: <value>` or query-string `?api_key=<value>`.\n- Regenerate at any time by deleting `api_key.txt` via File Manager and restarting the app.\n\n---\n\n### 2. Verify the service\n\nVisit `https://<app-domain>/health` in a browser. It should return JSON with `\"status\": \"ok\"` and a capability matrix showing which providers are currently enabled. No API key is required for this endpoint.\n\n---\n\n### 3. Configure LLM & vector providers\n\nEverOS ships with 4 independent provider tiers. Fill them progressively — the more providers you enable, the more capability you get.\n\nOpen the **File Manager**, navigate to `everos/everos.toml`, and fill in the `api_key` slots:\n\n| Tier       | Default provider | Default model                    | Unlocks |\n|------------|------------------|----------------------------------|---------|\n| `[llm]`    | OpenRouter       | `openai/gpt-4.1-mini`            | Memory extraction + keyword search |\n| `[multimodal]` | OpenRouter    | `google/gemini-3-flash-preview`  | Image / PDF / audio / Office ingestion |\n| `[embedding]` | DeepInfra      | `Qwen/Qwen3-Embedding-4B`        | Vector search, hybrid search, reflection, skill extraction |\n| `[rerank]` | DeepInfra        | `Qwen/Qwen3-Reranker-4B`         | Agentic search, Knowledge Wiki |\n\nAny OpenAI-compatible endpoint works — change `base_url` in each section to point at OpenAI, vLLM, a local Ollama bridge, or your self-hosted API.\n\nAfter editing `everos.toml`, **restart the app** for changes to take effect. (The companion file `ome.toml` is hot-reloaded within ~2 seconds and does not require a restart.)\n\n---\n\n### 4. Quick test: write and search a memory\n\n```bash\nTS=$(($(date +%s)*1000))\nAPI_KEY=\"<your-api-key>\"\nBASE=\"https://<app-domain>\"\n\n# Buffer a conversation\ncurl -X POST \"${BASE}/api/v2/memory/add\" \\\n  -H \"Content-Type: application/json\" \\\n  -H \"X-API-Key: ${API_KEY}\" \\\n  -d \"{\n    \\\"session_id\\\": \\\"demo-001\\\",\n    \\\"app_id\\\": \\\"default\\\",\n    \\\"project_id\\\": \\\"default\\\",\n    \\\"messages\\\": [\n      {\\\"sender_id\\\": \\\"alice\\\", \\\"role\\\": \\\"user\\\", \\\"timestamp\\\": ${TS}, \\\"content\\\": \\\"I love climbing in Yosemite every spring.\\\"},\n      {\\\"sender_id\\\": \\\"agent1\\\", \\\"role\\\": \\\"assistant\\\", \\\"timestamp\\\": $((TS+10000)), \\\"content\\\": \\\"Which routes do you enjoy most?\\\"},\n      {\\\"sender_id\\\": \\\"alice\\\", \\\"role\\\": \\\"user\\\", \\\"timestamp\\\": $((TS+20000)), \\\"content\\\": \\\"Mostly the cracks on El Cap.\\\"}\n    ]\n  }\"\n\n# Force extraction (LLM call)\ncurl -X POST \"${BASE}/api/v2/memory/flush\" \\\n  -H \"Content-Type: application/json\" \\\n  -H \"X-API-Key: ${API_KEY}\" \\\n  -d '{\"session_id\":\"demo-001\",\"app_id\":\"default\",\"project_id\":\"default\"}'\n\n# Search back (use \"keyword\" method if only [llm] is enabled)\ncurl -X POST \"${BASE}/api/v2/memory/search\" \\\n  -H \"Content-Type: application/json\" \\\n  -H \"X-API-Key: ${API_KEY}\" \\\n  -d '{\n    \"user_id\": \"alice\",\n    \"app_id\": \"default\",\n    \"project_id\": \"default\",\n    \"query\": \"Where does Alice like to climb?\",\n    \"method\": \"keyword\",\n    \"top_k\": 5\n  }'\n```\n\nIf the first search comes back empty, wait a second for cascade indexing and retry.\n\n---\n\n### 5. Where your data lives\n\nAll memory is stored as human-readable Markdown under File Manager path `everos/<app_id>/<project_id>/`.\n\n```\neveros/\n├── everos.toml            ← provider config (restart after edit)\n├── ome.toml               ← OME strategy (hot-reloaded)\n├── .index/\n│   ├── sqlite/system.db   ← state & queues\n│   └── lancedb/           ← vector + BM25 indexes\n└── default_app/\n    └── default_project/\n        ├── users/alice/\n        │   ├── user.md\n        │   ├── episodes/       ← extracted episode Markdown\n        │   ├── .atomic_facts/\n        │   └── .foresights/\n        ├── agents/<agent_id>/\n        │   ├── agent.md\n        │   ├── .cases/         ← recorded agent trajectories\n        │   └── skills/         ← distilled procedural skills\n        └── knowledge/\n```\n\nMarkdown files are the source of truth — SQLite and LanceDB are derived indexes. Edit any `.md` file directly and the cascade watcher will re-sync the indexes within seconds.\n\n---\n\n### 6. Integrations\n\nDrop EverOS into any agent stack via:\n- `/api/v2/memory/add` → `/flush` → `/search` in your agent loop\n- Claude Code plugin (EverOS MCP server)\n- OpenAI / Anthropic SDK clients\n- MCP clients (Model Context Protocol)\n\nThe OpenAPI spec is available at `https://<app-domain>/openapi.json` and the interactive docs at `https://<app-domain>/docs`.\n",
                "changelog": "* initial build upstream 1.2.3\n",
                "website": "https://communityapps.appx.uk",
                "contactEmail": "support@appx.uk",
                "icon": "file://logo.png",
                "tags": [
                    "productivity",
                    "ai",
                    "memory"
                ],
                "iconUrl": "https://communityapps.appx.uk/cloudron-everos/logo.png",
                "packagerName": "@timconsidine",
                "packagerUrl": "https://communityapps.appx.uk",
                "minBoxVersion": "9.1.0",
                "mediaLinks": [
                    "https://communityapps.appx.uk/cloudron-everos/media/screenshot.jpg"
                ],
                "dockerImage": "forgejo.tcjc.uk/cca/cloudron-everos:0.0.3"
            },
            "creationDate": "Tue, 01 Sep 2026 12:10:49 GMT",
            "ts": "Tue, 01 Sep 2026 12:10:49 GMT",
            "publishState": "published"
        },
        "0.0.4": {
            "manifest": {
                "id": "io.timconsidine.everos",
                "title": "EverOS",
                "author": "EverMind.AI",
                "description": "EverOS is a portable memory layer for every AI agent — local-first, Markdown-native, user-owned, and self-evolving across apps, tools, and workflows.\n\nAt its core, EverOS turns conversations, agent trajectories, and files into structured, retrievable, evolving long-term memory. It stores everything as readable, editable, git-friendly Markdown files (the canonical source of truth), backed by a lightweight three-piece local stack: Markdown + SQLite (state/queue) + LanceDB (vector similarity + BM25 keyword search). No MongoDB, Elasticsearch, Milvus, or Redis required.\n\nTwo memory tracks are first-class citizens:\n- **User memory**: Profiles, Episodes, Atomic Facts, and Foresights — what happened and who the user is.\n- **Agent memory**: Cases (completed task trajectories) that self-distil into reusable Skills shared across your agent team — giving agents procedural memory that gets better with use.\n\nThe FastAPI HTTP API is OpenAI-protocol compatible and drops into any existing agent loop. Compatible integrations include Claude Code plugin, OpenClaw skill, Codex, Hermes, MCP server, OpenAI SDK, and Anthropic SDK. Retrieval is orthogonal: scope every query by user_id, agent_id, app_id, project_id, and session_id.\n\nEverOS achieves 93%+ retrieval accuracy on the LoCoMo benchmark with p95 query latency under 500 ms, reducing token usage by ~90% vs loading the entire context window.\n\nA background offline-memory-evolution (OME) scheduler runs in-process: reflection merges episode clusters and refines profiles/skills between sessions, skill distillation promotes repeated Case patterns into Skills, and a cascade file watcher keeps the derived indexes in sync whenever you edit a Markdown source file directly.\n",
                "tagline": "portable memory layer for every AI agent: local-first, Markdown-native, user-owned, and self-evolving across apps, tools, and workflows",
                "version": "0.0.4",
                "upstreamVersion": "1.2.3",
                "healthCheckPath": "/health",
                "httpPort": 8000,
                "memoryLimit": 2147483648,
                "addons": {
                    "localstorage": {}
                },
                "manifestVersion": 2,
                "postInstallMessage": "## Welcome to EverOS\n\nEverOS is running on this Cloudron instance. Here is how to use it.\n\n---\n\n### 1. Retrieve your API key\n\nEvery API call (except `/health` and the docs pages) requires a Cloudron-generated API key. The key was created on first install and persisted at `/app/data/api_key.txt`. To view it:\n\n- Open a **Web Terminal** for this app and run:\n  ```\n  cat /app/data/api_key.txt\n  ```\n- Copy the value. Send it with every request as header `X-API-Key: <value>` or query-string `?api_key=<value>`.\n- Regenerate at any time by deleting `api_key.txt` via File Manager and restarting the app.\n\n---\n\n### 2. Verify the service\n\nVisit `https://<app-domain>/health` in a browser. It should return JSON with `\"status\": \"ok\"` and a capability matrix showing which providers are currently enabled. No API key is required for this endpoint.\n\n---\n\n### 3. Configure LLM & vector providers\n\nEverOS ships with 4 independent provider tiers. Fill them progressively — the more providers you enable, the more capability you get.\n\nOpen the **File Manager**, navigate to `everos/everos.toml`, and fill in the `api_key` slots:\n\n| Tier       | Default provider | Default model                    | Unlocks |\n|------------|------------------|----------------------------------|---------|\n| `[llm]`    | OpenRouter       | `openai/gpt-4.1-mini`            | Memory extraction + keyword search |\n| `[multimodal]` | OpenRouter    | `google/gemini-3-flash-preview`  | Image / PDF / audio / Office ingestion |\n| `[embedding]` | DeepInfra      | `Qwen/Qwen3-Embedding-4B`        | Vector search, hybrid search, reflection, skill extraction |\n| `[rerank]` | DeepInfra        | `Qwen/Qwen3-Reranker-4B`         | Agentic search, Knowledge Wiki |\n\nAny OpenAI-compatible endpoint works — change `base_url` in each section to point at OpenAI, vLLM, a local Ollama bridge, or your self-hosted API.\n\nAfter editing `everos.toml`, **restart the app** for changes to take effect. (The companion file `ome.toml` is hot-reloaded within ~2 seconds and does not require a restart.)\n\n---\n\n### 4. Quick test: write and search a memory\n\n```bash\nTS=$(($(date +%s)*1000))\nAPI_KEY=\"<your-api-key>\"\nBASE=\"https://<app-domain>\"\n\n# Buffer a conversation\ncurl -X POST \"${BASE}/api/v2/memory/add\" \\\n  -H \"Content-Type: application/json\" \\\n  -H \"X-API-Key: ${API_KEY}\" \\\n  -d \"{\n    \\\"session_id\\\": \\\"demo-001\\\",\n    \\\"app_id\\\": \\\"default\\\",\n    \\\"project_id\\\": \\\"default\\\",\n    \\\"messages\\\": [\n      {\\\"sender_id\\\": \\\"alice\\\", \\\"role\\\": \\\"user\\\", \\\"timestamp\\\": ${TS}, \\\"content\\\": \\\"I love climbing in Yosemite every spring.\\\"},\n      {\\\"sender_id\\\": \\\"agent1\\\", \\\"role\\\": \\\"assistant\\\", \\\"timestamp\\\": $((TS+10000)), \\\"content\\\": \\\"Which routes do you enjoy most?\\\"},\n      {\\\"sender_id\\\": \\\"alice\\\", \\\"role\\\": \\\"user\\\", \\\"timestamp\\\": $((TS+20000)), \\\"content\\\": \\\"Mostly the cracks on El Cap.\\\"}\n    ]\n  }\"\n\n# Force extraction (LLM call)\ncurl -X POST \"${BASE}/api/v2/memory/flush\" \\\n  -H \"Content-Type: application/json\" \\\n  -H \"X-API-Key: ${API_KEY}\" \\\n  -d '{\"session_id\":\"demo-001\",\"app_id\":\"default\",\"project_id\":\"default\"}'\n\n# Search back (use \"keyword\" method if only [llm] is enabled)\ncurl -X POST \"${BASE}/api/v2/memory/search\" \\\n  -H \"Content-Type: application/json\" \\\n  -H \"X-API-Key: ${API_KEY}\" \\\n  -d '{\n    \"user_id\": \"alice\",\n    \"app_id\": \"default\",\n    \"project_id\": \"default\",\n    \"query\": \"Where does Alice like to climb?\",\n    \"method\": \"keyword\",\n    \"top_k\": 5\n  }'\n```\n\nIf the first search comes back empty, wait a second for cascade indexing and retry.\n\n---\n\n### 5. Where your data lives\n\nAll memory is stored as human-readable Markdown under File Manager path `everos/<app_id>/<project_id>/`.\n\n```\neveros/\n├── everos.toml            ← provider config (restart after edit)\n├── ome.toml               ← OME strategy (hot-reloaded)\n├── .index/\n│   ├── sqlite/system.db   ← state & queues\n│   └── lancedb/           ← vector + BM25 indexes\n└── default_app/\n    └── default_project/\n        ├── users/alice/\n        │   ├── user.md\n        │   ├── episodes/       ← extracted episode Markdown\n        │   ├── .atomic_facts/\n        │   └── .foresights/\n        ├── agents/<agent_id>/\n        │   ├── agent.md\n        │   ├── .cases/         ← recorded agent trajectories\n        │   └── skills/         ← distilled procedural skills\n        └── knowledge/\n```\n\nMarkdown files are the source of truth — SQLite and LanceDB are derived indexes. Edit any `.md` file directly and the cascade watcher will re-sync the indexes within seconds.\n\n---\n\n### 6. Integrations\n\nDrop EverOS into any agent stack via:\n- `/api/v2/memory/add` → `/flush` → `/search` in your agent loop\n- Claude Code plugin (EverOS MCP server)\n- OpenAI / Anthropic SDK clients\n- MCP clients (Model Context Protocol)\n\nThe OpenAPI spec is available at `https://<app-domain>/openapi.json` and the interactive docs at `https://<app-domain>/docs`.\n",
                "changelog": "* initial build upstream 1.2.3\n",
                "website": "https://communityapps.appx.uk",
                "contactEmail": "support@appx.uk",
                "icon": "file://logo.png",
                "tags": [
                    "productivity",
                    "ai",
                    "memory"
                ],
                "iconUrl": "https://communityapps.appx.uk/cloudron-everos/logo.png",
                "packagerName": "@timconsidine",
                "packagerUrl": "https://communityapps.appx.uk",
                "minBoxVersion": "9.1.0",
                "mediaLinks": [
                    "https://communityapps.appx.uk/cloudron-everos/media/screenshot.jpg"
                ],
                "dockerImage": "forgejo.tcjc.uk/cca/cloudron-everos:0.0.4"
            },
            "creationDate": "Tue, 01 Sep 2026 12:23:22 GMT",
            "ts": "Tue, 01 Sep 2026 12:23:22 GMT",
            "publishState": "published"
        },
        "0.0.5": {
            "manifest": {
                "id": "io.timconsidine.everos",
                "title": "EverOS",
                "author": "EverMind.AI",
                "description": "EverOS is a portable memory layer for every AI agent — local-first, Markdown-native, user-owned, and self-evolving across apps, tools, and workflows.\n\nAt its core, EverOS turns conversations, agent trajectories, and files into structured, retrievable, evolving long-term memory. It stores everything as readable, editable, git-friendly Markdown files (the canonical source of truth), backed by a lightweight three-piece local stack: Markdown + SQLite (state/queue) + LanceDB (vector similarity + BM25 keyword search). No MongoDB, Elasticsearch, Milvus, or Redis required.\n\nTwo memory tracks are first-class citizens:\n- **User memory**: Profiles, Episodes, Atomic Facts, and Foresights — what happened and who the user is.\n- **Agent memory**: Cases (completed task trajectories) that self-distil into reusable Skills shared across your agent team — giving agents procedural memory that gets better with use.\n\nThe FastAPI HTTP API is OpenAI-protocol compatible and drops into any existing agent loop. Compatible integrations include Claude Code plugin, OpenClaw skill, Codex, Hermes, MCP server, OpenAI SDK, and Anthropic SDK. Retrieval is orthogonal: scope every query by user_id, agent_id, app_id, project_id, and session_id.\n\nEverOS achieves 93%+ retrieval accuracy on the LoCoMo benchmark with p95 query latency under 500 ms, reducing token usage by ~90% vs loading the entire context window.\n\nA background offline-memory-evolution (OME) scheduler runs in-process: reflection merges episode clusters and refines profiles/skills between sessions, skill distillation promotes repeated Case patterns into Skills, and a cascade file watcher keeps the derived indexes in sync whenever you edit a Markdown source file directly.\n",
                "tagline": "portable memory layer for every AI agent: local-first, Markdown-native, user-owned, and self-evolving across apps, tools, and workflows",
                "version": "0.0.5",
                "upstreamVersion": "1.2.3",
                "healthCheckPath": "/health",
                "httpPort": 8000,
                "memoryLimit": 2147483648,
                "addons": {
                    "localstorage": {}
                },
                "manifestVersion": 2,
                "postInstallMessage": "## Welcome to EverOS\n\nEverOS is running on this Cloudron instance. Here is how to use it.\n\n---\n\n### 1. Retrieve your API key\n\nEvery API call (except `/health` and the docs pages) requires a Cloudron-generated API key. The key was created on first install and persisted at `/app/data/api_key.txt`. To view it:\n\n- Open a **Web Terminal** for this app and run:\n  ```\n  cat /app/data/api_key.txt\n  ```\n- Copy the value. Send it with every request as header `X-API-Key: <value>` or query-string `?api_key=<value>`.\n- Regenerate at any time by deleting `api_key.txt` via File Manager and restarting the app.\n\n---\n\n### 2. Verify the service\n\nVisit `https://<app-domain>/health` in a browser. It should return JSON with `\"status\": \"ok\"` and a capability matrix showing which providers are currently enabled. No API key is required for this endpoint.\n\n---\n\n### 3. Configure LLM & vector providers\n\nEverOS ships with 4 independent provider tiers. Fill them progressively — the more providers you enable, the more capability you get.\n\nOpen the **File Manager**, navigate to `everos/everos.toml`, and fill in the `api_key` slots:\n\n| Tier       | Default provider | Default model                    | Unlocks |\n|------------|------------------|----------------------------------|---------|\n| `[llm]`    | OpenRouter       | `openai/gpt-4.1-mini`            | Memory extraction + keyword search |\n| `[multimodal]` | OpenRouter    | `google/gemini-3-flash-preview`  | Image / PDF / audio / Office ingestion |\n| `[embedding]` | DeepInfra      | `Qwen/Qwen3-Embedding-4B`        | Vector search, hybrid search, reflection, skill extraction |\n| `[rerank]` | DeepInfra        | `Qwen/Qwen3-Reranker-4B`         | Agentic search, Knowledge Wiki |\n\nAny OpenAI-compatible endpoint works — change `base_url` in each section to point at OpenAI, vLLM, a local Ollama bridge, or your self-hosted API.\n\nAfter editing `everos.toml`, **restart the app** for changes to take effect. (The companion file `ome.toml` is hot-reloaded within ~2 seconds and does not require a restart.)\n\n---\n\n### 4. Quick test: write and search a memory\n\n```bash\nTS=$(($(date +%s)*1000))\nAPI_KEY=\"<your-api-key>\"\nBASE=\"https://<app-domain>\"\n\n# Buffer a conversation\ncurl -X POST \"${BASE}/api/v2/memory/add\" \\\n  -H \"Content-Type: application/json\" \\\n  -H \"X-API-Key: ${API_KEY}\" \\\n  -d \"{\n    \\\"session_id\\\": \\\"demo-001\\\",\n    \\\"app_id\\\": \\\"default\\\",\n    \\\"project_id\\\": \\\"default\\\",\n    \\\"messages\\\": [\n      {\\\"sender_id\\\": \\\"alice\\\", \\\"role\\\": \\\"user\\\", \\\"timestamp\\\": ${TS}, \\\"content\\\": \\\"I love climbing in Yosemite every spring.\\\"},\n      {\\\"sender_id\\\": \\\"agent1\\\", \\\"role\\\": \\\"assistant\\\", \\\"timestamp\\\": $((TS+10000)), \\\"content\\\": \\\"Which routes do you enjoy most?\\\"},\n      {\\\"sender_id\\\": \\\"alice\\\", \\\"role\\\": \\\"user\\\", \\\"timestamp\\\": $((TS+20000)), \\\"content\\\": \\\"Mostly the cracks on El Cap.\\\"}\n    ]\n  }\"\n\n# Force extraction (LLM call)\ncurl -X POST \"${BASE}/api/v2/memory/flush\" \\\n  -H \"Content-Type: application/json\" \\\n  -H \"X-API-Key: ${API_KEY}\" \\\n  -d '{\"session_id\":\"demo-001\",\"app_id\":\"default\",\"project_id\":\"default\"}'\n\n# Search back (use \"keyword\" method if only [llm] is enabled)\ncurl -X POST \"${BASE}/api/v2/memory/search\" \\\n  -H \"Content-Type: application/json\" \\\n  -H \"X-API-Key: ${API_KEY}\" \\\n  -d '{\n    \"user_id\": \"alice\",\n    \"app_id\": \"default\",\n    \"project_id\": \"default\",\n    \"query\": \"Where does Alice like to climb?\",\n    \"method\": \"keyword\",\n    \"top_k\": 5\n  }'\n```\n\nIf the first search comes back empty, wait a second for cascade indexing and retry.\n\n---\n\n### 5. Where your data lives\n\nAll memory is stored as human-readable Markdown under File Manager path `everos/<app_id>/<project_id>/`.\n\n```\neveros/\n├── everos.toml            ← provider config (restart after edit)\n├── ome.toml               ← OME strategy (hot-reloaded)\n├── .index/\n│   ├── sqlite/system.db   ← state & queues\n│   └── lancedb/           ← vector + BM25 indexes\n└── default_app/\n    └── default_project/\n        ├── users/alice/\n        │   ├── user.md\n        │   ├── episodes/       ← extracted episode Markdown\n        │   ├── .atomic_facts/\n        │   └── .foresights/\n        ├── agents/<agent_id>/\n        │   ├── agent.md\n        │   ├── .cases/         ← recorded agent trajectories\n        │   └── skills/         ← distilled procedural skills\n        └── knowledge/\n```\n\nMarkdown files are the source of truth — SQLite and LanceDB are derived indexes. Edit any `.md` file directly and the cascade watcher will re-sync the indexes within seconds.\n\n---\n\n### 6. Integrations\n\nDrop EverOS into any agent stack via:\n- `/api/v2/memory/add` → `/flush` → `/search` in your agent loop\n- Claude Code plugin (EverOS MCP server)\n- OpenAI / Anthropic SDK clients\n- MCP clients (Model Context Protocol)\n\nThe OpenAPI spec is available at `https://<app-domain>/openapi.json` and the interactive docs at `https://<app-domain>/docs`.\n",
                "changelog": "* initial build upstream 1.2.3\n",
                "website": "https://communityapps.appx.uk",
                "contactEmail": "support@appx.uk",
                "icon": "file://logo.png",
                "tags": [
                    "productivity",
                    "ai",
                    "memory"
                ],
                "iconUrl": "https://communityapps.appx.uk/cloudron-everos/logo.png",
                "packagerName": "@timconsidine",
                "packagerUrl": "https://communityapps.appx.uk",
                "minBoxVersion": "9.1.0",
                "mediaLinks": [
                    "https://communityapps.appx.uk/cloudron-everos/media/screenshot.jpg"
                ],
                "dockerImage": "forgejo.tcjc.uk/cca/cloudron-everos:0.0.5"
            },
            "creationDate": "Tue, 01 Sep 2026 12:31:12 GMT",
            "ts": "Tue, 01 Sep 2026 12:31:12 GMT",
            "publishState": "published"
        },
        "0.0.6": {
            "manifest": {
                "id": "io.timconsidine.everos",
                "title": "EverOS",
                "author": "EverMind.AI",
                "description": "EverOS is a portable memory layer for every AI agent — local-first, Markdown-native, user-owned, and self-evolving across apps, tools, and workflows.\n\nAt its core, EverOS turns conversations, agent trajectories, and files into structured, retrievable, evolving long-term memory. It stores everything as readable, editable, git-friendly Markdown files (the canonical source of truth), backed by a lightweight three-piece local stack: Markdown + SQLite (state/queue) + LanceDB (vector similarity + BM25 keyword search). No MongoDB, Elasticsearch, Milvus, or Redis required.\n\nTwo memory tracks are first-class citizens:\n- **User memory**: Profiles, Episodes, Atomic Facts, and Foresights — what happened and who the user is.\n- **Agent memory**: Cases (completed task trajectories) that self-distil into reusable Skills shared across your agent team — giving agents procedural memory that gets better with use.\n\nThe FastAPI HTTP API is OpenAI-protocol compatible and drops into any existing agent loop. Compatible integrations include Claude Code plugin, OpenClaw skill, Codex, Hermes, MCP server, OpenAI SDK, and Anthropic SDK. Retrieval is orthogonal: scope every query by user_id, agent_id, app_id, project_id, and session_id.\n\nEverOS achieves 93%+ retrieval accuracy on the LoCoMo benchmark with p95 query latency under 500 ms, reducing token usage by ~90% vs loading the entire context window.\n\nA background offline-memory-evolution (OME) scheduler runs in-process: reflection merges episode clusters and refines profiles/skills between sessions, skill distillation promotes repeated Case patterns into Skills, and a cascade file watcher keeps the derived indexes in sync whenever you edit a Markdown source file directly.\n",
                "tagline": "portable memory layer for every AI agent: local-first, Markdown-native, user-owned, and self-evolving across apps, tools, and workflows",
                "version": "0.0.6",
                "upstreamVersion": "1.2.3",
                "healthCheckPath": "/health",
                "httpPort": 8000,
                "memoryLimit": 2147483648,
                "addons": {
                    "localstorage": {}
                },
                "manifestVersion": 2,
                "postInstallMessage": "## Welcome to EverOS\n\nEverOS is running on this Cloudron instance. Here is how to use it.\n\n---\n\n### 1. Retrieve your API key\n\nEvery API call (except `/health` and the docs pages) requires a Cloudron-generated API key. The key was created on first install and persisted at `/app/data/api_key.txt`. To view it:\n\n- Open a **Web Terminal** for this app and run:\n  ```\n  cat /app/data/api_key.txt\n  ```\n- Copy the value. Send it with every request as header `X-API-Key: <value>` or query-string `?api_key=<value>`.\n- Regenerate at any time by deleting `api_key.txt` via File Manager and restarting the app.\n\n---\n\n### 2. Verify the service\n\nVisit `https://<app-domain>/health` in a browser. It should return JSON with `\"status\": \"ok\"` and a capability matrix showing which providers are currently enabled. No API key is required for this endpoint.\n\n---\n\n### 3. Configure LLM & vector providers\n\nEverOS ships with 4 independent provider tiers. Fill them progressively — the more providers you enable, the more capability you get.\n\nOpen the **File Manager**, navigate to `everos/everos.toml`, and fill in the `api_key` slots:\n\n| Tier       | Default provider | Default model                    | Unlocks |\n|------------|------------------|----------------------------------|---------|\n| `[llm]`    | OpenRouter       | `openai/gpt-4.1-mini`            | Memory extraction + keyword search |\n| `[multimodal]` | OpenRouter    | `google/gemini-3-flash-preview`  | Image / PDF / audio / Office ingestion |\n| `[embedding]` | DeepInfra      | `Qwen/Qwen3-Embedding-4B`        | Vector search, hybrid search, reflection, skill extraction |\n| `[rerank]` | DeepInfra        | `Qwen/Qwen3-Reranker-4B`         | Agentic search, Knowledge Wiki |\n\nAny OpenAI-compatible endpoint works — change `base_url` in each section to point at OpenAI, vLLM, a local Ollama bridge, or your self-hosted API.\n\nAfter editing `everos.toml`, **restart the app** for changes to take effect. (The companion file `ome.toml` is hot-reloaded within ~2 seconds and does not require a restart.)\n\n---\n\n### 4. Quick test: write and search a memory\n\n```bash\nTS=$(($(date +%s)*1000))\nAPI_KEY=\"<your-api-key>\"\nBASE=\"https://<app-domain>\"\n\n# Buffer a conversation\ncurl -X POST \"${BASE}/api/v2/memory/add\" \\\n  -H \"Content-Type: application/json\" \\\n  -H \"X-API-Key: ${API_KEY}\" \\\n  -d \"{\n    \\\"session_id\\\": \\\"demo-001\\\",\n    \\\"app_id\\\": \\\"default\\\",\n    \\\"project_id\\\": \\\"default\\\",\n    \\\"messages\\\": [\n      {\\\"sender_id\\\": \\\"alice\\\", \\\"role\\\": \\\"user\\\", \\\"timestamp\\\": ${TS}, \\\"content\\\": \\\"I love climbing in Yosemite every spring.\\\"},\n      {\\\"sender_id\\\": \\\"agent1\\\", \\\"role\\\": \\\"assistant\\\", \\\"timestamp\\\": $((TS+10000)), \\\"content\\\": \\\"Which routes do you enjoy most?\\\"},\n      {\\\"sender_id\\\": \\\"alice\\\", \\\"role\\\": \\\"user\\\", \\\"timestamp\\\": $((TS+20000)), \\\"content\\\": \\\"Mostly the cracks on El Cap.\\\"}\n    ]\n  }\"\n\n# Force extraction (LLM call)\ncurl -X POST \"${BASE}/api/v2/memory/flush\" \\\n  -H \"Content-Type: application/json\" \\\n  -H \"X-API-Key: ${API_KEY}\" \\\n  -d '{\"session_id\":\"demo-001\",\"app_id\":\"default\",\"project_id\":\"default\"}'\n\n# Search back (use \"keyword\" method if only [llm] is enabled)\ncurl -X POST \"${BASE}/api/v2/memory/search\" \\\n  -H \"Content-Type: application/json\" \\\n  -H \"X-API-Key: ${API_KEY}\" \\\n  -d '{\n    \"user_id\": \"alice\",\n    \"app_id\": \"default\",\n    \"project_id\": \"default\",\n    \"query\": \"Where does Alice like to climb?\",\n    \"method\": \"keyword\",\n    \"top_k\": 5\n  }'\n```\n\nIf the first search comes back empty, wait a second for cascade indexing and retry.\n\n---\n\n### 5. Where your data lives\n\nAll memory is stored as human-readable Markdown under File Manager path `everos/<app_id>/<project_id>/`.\n\n```\neveros/\n├── everos.toml            ← provider config (restart after edit)\n├── ome.toml               ← OME strategy (hot-reloaded)\n├── .index/\n│   ├── sqlite/system.db   ← state & queues\n│   └── lancedb/           ← vector + BM25 indexes\n└── default_app/\n    └── default_project/\n        ├── users/alice/\n        │   ├── user.md\n        │   ├── episodes/       ← extracted episode Markdown\n        │   ├── .atomic_facts/\n        │   └── .foresights/\n        ├── agents/<agent_id>/\n        │   ├── agent.md\n        │   ├── .cases/         ← recorded agent trajectories\n        │   └── skills/         ← distilled procedural skills\n        └── knowledge/\n```\n\nMarkdown files are the source of truth — SQLite and LanceDB are derived indexes. Edit any `.md` file directly and the cascade watcher will re-sync the indexes within seconds.\n\n---\n\n### 6. Integrations\n\nDrop EverOS into any agent stack via:\n- `/api/v2/memory/add` → `/flush` → `/search` in your agent loop\n- Claude Code plugin (EverOS MCP server)\n- OpenAI / Anthropic SDK clients\n- MCP clients (Model Context Protocol)\n\nThe OpenAPI spec is available at `https://<app-domain>/openapi.json` and the interactive docs at `https://<app-domain>/docs`.\n",
                "changelog": "* initial build upstream 1.2.3\n",
                "website": "https://communityapps.appx.uk",
                "contactEmail": "support@appx.uk",
                "icon": "file://logo.png",
                "tags": [
                    "productivity",
                    "ai",
                    "memory"
                ],
                "iconUrl": "https://communityapps.appx.uk/cloudron-everos/logo.png",
                "packagerName": "@timconsidine",
                "packagerUrl": "https://communityapps.appx.uk",
                "minBoxVersion": "9.1.0",
                "mediaLinks": [
                    "https://communityapps.appx.uk/cloudron-everos/media/screenshot.jpg"
                ],
                "dockerImage": "forgejo.tcjc.uk/cca/cloudron-everos:0.0.6"
            },
            "creationDate": "Tue, 01 Sep 2026 15:34:23 GMT",
            "ts": "Tue, 01 Sep 2026 15:34:23 GMT",
            "publishState": "published"
        },
        "0.0.7": {
            "manifest": {
                "id": "io.timconsidine.everos",
                "title": "EverOS",
                "author": "EverMind.AI",
                "description": "EverOS is a portable memory layer for every AI agent — local-first, Markdown-native, user-owned, and self-evolving across apps, tools, and workflows.\n\nAt its core, EverOS turns conversations, agent trajectories, and files into structured, retrievable, evolving long-term memory. It stores everything as readable, editable, git-friendly Markdown files (the canonical source of truth), backed by a lightweight three-piece local stack: Markdown + SQLite (state/queue) + LanceDB (vector similarity + BM25 keyword search). No MongoDB, Elasticsearch, Milvus, or Redis required.\n\nTwo memory tracks are first-class citizens:\n- **User memory**: Profiles, Episodes, Atomic Facts, and Foresights — what happened and who the user is.\n- **Agent memory**: Cases (completed task trajectories) that self-distil into reusable Skills shared across your agent team — giving agents procedural memory that gets better with use.\n\nThe FastAPI HTTP API is OpenAI-protocol compatible and drops into any existing agent loop. Compatible integrations include Claude Code plugin, OpenClaw skill, Codex, Hermes, MCP server, OpenAI SDK, and Anthropic SDK. Retrieval is orthogonal: scope every query by user_id, agent_id, app_id, project_id, and session_id.\n\nEverOS achieves 93%+ retrieval accuracy on the LoCoMo benchmark with p95 query latency under 500 ms, reducing token usage by ~90% vs loading the entire context window.\n\nA background offline-memory-evolution (OME) scheduler runs in-process: reflection merges episode clusters and refines profiles/skills between sessions, skill distillation promotes repeated Case patterns into Skills, and a cascade file watcher keeps the derived indexes in sync whenever you edit a Markdown source file directly.\n",
                "tagline": "portable memory layer for every AI agent: local-first, Markdown-native, user-owned, and self-evolving across apps, tools, and workflows",
                "version": "0.0.7",
                "upstreamVersion": "1.2.3",
                "healthCheckPath": "/health",
                "httpPort": 8000,
                "memoryLimit": 2147483648,
                "addons": {
                    "localstorage": {}
                },
                "manifestVersion": 2,
                "postInstallMessage": "## Welcome to EverOS\n\nEverOS is running on this Cloudron instance. Here is how to use it.\n\n---\n\n### 1. Retrieve your API key\n\nEvery API call (except `/health` and the docs pages) requires a Cloudron-generated API key. The key was created on first install and persisted at `/app/data/api_key.txt`. To view it:\n\n- Open a **Web Terminal** for this app and run:\n  ```\n  cat /app/data/api_key.txt\n  ```\n- Copy the value. Send it with every request as header `X-API-Key: <value>` or query-string `?api_key=<value>`.\n- Regenerate at any time by deleting `api_key.txt` via File Manager and restarting the app.\n\n---\n\n### 2. Verify the service\n\nVisit `https://<app-domain>/health` in a browser. It should return JSON with `\"status\": \"ok\"` and a capability matrix showing which providers are currently enabled. No API key is required for this endpoint.\n\n---\n\n### 3. Configure LLM & vector providers\n\nEverOS ships with 4 independent provider tiers. Fill them progressively — the more providers you enable, the more capability you get.\n\nOpen the **File Manager**, navigate to `everos/everos.toml`, and fill in the `api_key` slots:\n\n| Tier       | Default provider | Default model                    | Unlocks |\n|------------|------------------|----------------------------------|---------|\n| `[llm]`    | OpenRouter       | `openai/gpt-4.1-mini`            | Memory extraction + keyword search |\n| `[multimodal]` | OpenRouter    | `google/gemini-3-flash-preview`  | Image / PDF / audio / Office ingestion |\n| `[embedding]` | DeepInfra      | `Qwen/Qwen3-Embedding-4B`        | Vector search, hybrid search, reflection, skill extraction |\n| `[rerank]` | DeepInfra        | `Qwen/Qwen3-Reranker-4B`         | Agentic search, Knowledge Wiki |\n\nAny OpenAI-compatible endpoint works — change `base_url` in each section to point at OpenAI, vLLM, a local Ollama bridge, or your self-hosted API.\n\nAfter editing `everos.toml`, **restart the app** for changes to take effect. (The companion file `ome.toml` is hot-reloaded within ~2 seconds and does not require a restart.)\n\n---\n\n### 4a. Quick test — write a memory\n\nFirst set your install's env vars (no credentials are hard-coded here):\n\n```bash\nexport EVEROS_API_KEY=\"<value from step 1>\"\nexport EVEROS_BASE=\"https://<app-domain>\"   # no trailing slash\n```\n\nThen buffer and extract a short conversation:\n\n```bash\nTS=$(($(date +%s)*1000))\n\n# Buffer a 3-turn conversation into session demo-001\ncurl -sS -X POST \"${EVEROS_BASE}/api/v2/memory/add\" \\\n  -H \"Content-Type: application/json\" \\\n  -H \"X-API-Key: ${EVEROS_API_KEY}\" \\\n  -w \"\\nHTTP %{http_code}\\n\" \\\n  -d \"{\n    \\\"session_id\\\": \\\"demo-001\\\",\n    \\\"app_id\\\": \\\"default\\\",\n    \\\"project_id\\\": \\\"default\\\",\n    \\\"messages\\\": [\n      {\\\"sender_id\\\": \\\"alice\\\",  \\\"role\\\": \\\"user\\\",      \\\"timestamp\\\": ${TS},        \\\"content\\\": \\\"I love climbing in Yosemite every spring.\\\"},\n      {\\\"sender_id\\\": \\\"agent1\\\", \\\"role\\\": \\\"assistant\\\", \\\"timestamp\\\": $((TS+10000)), \\\"content\\\": \\\"Which routes do you enjoy most?\\\"},\n      {\\\"sender_id\\\": \\\"alice\\\",  \\\"role\\\": \\\"user\\\",      \\\"timestamp\\\": $((TS+20000)), \\\"content\\\": \\\"Mostly the cracks on El Cap.\\\"}\n    ]\n  }\"\n\n# Force extraction (calls the [llm] provider to write Markdown + index entries)\ncurl -sS -X POST \"${EVEROS_BASE}/api/v2/memory/flush\" \\\n  -H \"Content-Type: application/json\" \\\n  -H \"X-API-Key: ${EVEROS_API_KEY}\" \\\n  -w \"\\nHTTP %{http_code}\\n\" \\\n  -d '{\"session_id\":\"demo-001\",\"app_id\":\"default\",\"project_id\":\"default\"}'\n```\n\n`/flush` returns `status: \"extracted\"` on success or `status: \"no_extraction\"` when there was nothing in the buffer worth committing or when the LLM provider is not yet configured (fill `[llm].api_key` + `[llm].base_url` in everos.toml and restart).\n\n---\n\n### 4b. Quick test — search back (pretty output)\n\nKeep the same two env vars exported, then run:\n\n```bash\n# Default query (about Alice's climbing)\n./check-memory.sh\n\n# Optional: custom query / method / top_k\n./check-memory.sh \"What did Alice say about El Cap?\"\nMETHOD=hybrid TOP_K=10 ./check-memory.sh \"climbing locations\"\n```\n\nThe script uses `python3` to pretty-print the JSON response. Each hit is rendered as a legible card showing:\n\n```\n=== Episodes (1) ===\n--- Hit 1  score=0.904  kind=Conversation ---\n  title   : Alice's Yosemite Spring Climbing Preferences: El Cap Cracks\n  id      : alice_ep_20260901_00000001\n  session : demo-001\n  user    : alice\n  senders : alice, agent1\n  summary : On 2026-09-01 at 15:35 UTC, Alice told agent1 that she loves\n            climbing in Yosemite every spring. When asked which routes she\n            enjoys most, Alice specified that she mostly climbs the cracks on\n            El Cap.\n```\n\nIf the first search comes back empty, wait 1–2 seconds for cascade indexing and retry.\n\n---\n\n### 5. Where your data lives\n\nAll memory is stored as human-readable Markdown under File Manager path `everos/<app_id>/<project_id>/`.\n\n```\neveros/\n├── everos.toml            ← provider config (restart after edit)\n├── ome.toml               ← OME strategy (hot-reloaded)\n├── .index/\n│   ├── sqlite/system.db   ← state & queues\n│   └── lancedb/           ← vector + BM25 indexes\n└── default_app/\n    └── default_project/\n        ├── users/alice/\n        │   ├── user.md\n        │   ├── episodes/       ← extracted episode Markdown\n        │   ├── .atomic_facts/\n        │   └── .foresights/\n        ├── agents/<agent_id>/\n        │   ├── agent.md\n        │   ├── .cases/         ← recorded agent trajectories\n        │   └── skills/         ← distilled procedural skills\n        └── knowledge/\n```\n\nMarkdown files are the source of truth — SQLite and LanceDB are derived indexes. Edit any `.md` file directly and the cascade watcher will re-sync the indexes within seconds.\n\n---\n\n### 6. Integrations\n\nDrop EverOS into any agent stack via:\n- `/api/v2/memory/add` → `/flush` → `/search` in your agent loop\n- Claude Code plugin (EverOS MCP server)\n- OpenAI / Anthropic SDK clients\n- MCP clients (Model Context Protocol)\n\nThe OpenAPI spec is available at `https://<app-domain>/openapi.json` and the interactive docs at `https://<app-domain>/docs`.\n",
                "changelog": "* initial build upstream 1.2.3\n",
                "website": "https://communityapps.appx.uk",
                "contactEmail": "support@appx.uk",
                "icon": "file://logo.png",
                "tags": [
                    "productivity",
                    "ai",
                    "memory"
                ],
                "iconUrl": "https://communityapps.appx.uk/cloudron-everos/logo.png",
                "packagerName": "@timconsidine",
                "packagerUrl": "https://communityapps.appx.uk",
                "minBoxVersion": "9.1.0",
                "mediaLinks": [
                    "https://communityapps.appx.uk/cloudron-everos/media/screenshot.jpg"
                ],
                "dockerImage": "forgejo.tcjc.uk/cca/cloudron-everos:0.0.7"
            },
            "creationDate": "Tue, 01 Sep 2026 15:46:20 GMT",
            "ts": "Tue, 01 Sep 2026 15:46:20 GMT",
            "publishState": "published"
        },
        "0.0.8": {
            "manifest": {
                "id": "io.timconsidine.everos",
                "title": "EverOS",
                "author": "EverMind.AI",
                "description": "EverOS is a portable memory layer for every AI agent — local-first, Markdown-native, user-owned, and self-evolving across apps, tools, and workflows.\n\nAt its core, EverOS turns conversations, agent trajectories, and files into structured, retrievable, evolving long-term memory. It stores everything as readable, editable, git-friendly Markdown files (the canonical source of truth), backed by a lightweight three-piece local stack: Markdown + SQLite (state/queue) + LanceDB (vector similarity + BM25 keyword search). No MongoDB, Elasticsearch, Milvus, or Redis required.\n\nTwo memory tracks are first-class citizens:\n- **User memory**: Profiles, Episodes, Atomic Facts, and Foresights — what happened and who the user is.\n- **Agent memory**: Cases (completed task trajectories) that self-distil into reusable Skills shared across your agent team — giving agents procedural memory that gets better with use.\n\nThe FastAPI HTTP API is OpenAI-protocol compatible and drops into any existing agent loop. Compatible integrations include Claude Code plugin, OpenClaw skill, Codex, Hermes, MCP server, OpenAI SDK, and Anthropic SDK. Retrieval is orthogonal: scope every query by user_id, agent_id, app_id, project_id, and session_id.\n\nEverOS achieves 93%+ retrieval accuracy on the LoCoMo benchmark with p95 query latency under 500 ms, reducing token usage by ~90% vs loading the entire context window.\n\nA background offline-memory-evolution (OME) scheduler runs in-process: reflection merges episode clusters and refines profiles/skills between sessions, skill distillation promotes repeated Case patterns into Skills, and a cascade file watcher keeps the derived indexes in sync whenever you edit a Markdown source file directly.\n",
                "tagline": "portable memory layer for every AI agent: local-first, Markdown-native, user-owned, and self-evolving across apps, tools, and workflows",
                "version": "0.0.8",
                "upstreamVersion": "1.2.3",
                "healthCheckPath": "/health",
                "httpPort": 8000,
                "memoryLimit": 2147483648,
                "addons": {
                    "localstorage": {}
                },
                "manifestVersion": 2,
                "postInstallMessage": "## Welcome to EverOS\n\nEverOS is running on this Cloudron instance. Here is how to use it.\n\n---\n\n### 1. Retrieve your API key\n\nEvery API call (except `/health` and the docs pages) requires a Cloudron-generated API key. The key was created on first install and persisted at `/app/data/api_key.txt`. To view it:\n\n- Open a **Web Terminal** for this app and run:\n  ```\n  cat /app/data/api_key.txt\n  ```\n- Copy the value. Send it with every request as header `X-API-Key: <value>` or query-string `?api_key=<value>`.\n- Regenerate at any time by deleting `api_key.txt` via File Manager and restarting the app.\n\n---\n\n### 2. Verify the service\n\nVisit `https://<app-domain>/health` in a browser. It should return JSON with `\"status\": \"ok\"` and a capability matrix showing which providers are currently enabled. No API key is required for this endpoint.\n\n---\n\n### 3. Configure LLM & vector providers\n\nEverOS ships with 4 independent provider tiers. Fill them progressively — the more providers you enable, the more capability you get.\n\nOpen the **File Manager**, navigate to `everos/everos.toml`, and fill in the `api_key` slots:\n\n| Tier       | Default provider | Default model                    | Unlocks |\n|------------|------------------|----------------------------------|---------|\n| `[llm]`    | OpenRouter       | `openai/gpt-4.1-mini`            | Memory extraction + keyword search |\n| `[multimodal]` | OpenRouter    | `google/gemini-3-flash-preview`  | Image / PDF / audio / Office ingestion |\n| `[embedding]` | DeepInfra      | `Qwen/Qwen3-Embedding-4B`        | Vector search, hybrid search, reflection, skill extraction |\n| `[rerank]` | DeepInfra        | `Qwen/Qwen3-Reranker-4B`         | Agentic search, Knowledge Wiki |\n\nAny OpenAI-compatible endpoint works — change `base_url` in each section to point at OpenAI, vLLM, a local Ollama bridge, or your self-hosted API.\n\nAfter editing `everos.toml`, **restart the app** for changes to take effect. (The companion file `ome.toml` is hot-reloaded within ~2 seconds and does not require a restart.)\n\n---\n\n### 4a. Quick test — write a memory\n\nRun the sample script that ships in File Manager under `scripts/save-memory.sh`. It buffers a 3-turn conversation into EverOS and then forces extraction.\n\n```bash\n# From a Web Terminal for this app (or on any machine with curl):\n./scripts/save-memory.sh <api_key> <base_url>\n\n# Example:\n./scripts/save-memory.sh abcXYZ123 https://everos.example.com\n```\n\nArguments (both required — run with no args for usage text):\n- `api_key` — value from step 1 (`cat /app/data/api_key.txt`)\n- `base_url` — full install URL, e.g. `https://everos.example.com` (no trailing slash)\n\n`/flush` returns `status: \"extracted\"` on success, or `status: \"no_extraction\"` when the LLM provider is not yet configured (fill `[llm].api_key` + `[llm].base_url` in `everos/everos.toml`, restart, and retry).\n\n---\n\n### 4b. Quick test — search back (pretty output)\n\nRun the sample script in File Manager under `scripts/check-memory.sh`. It calls the search endpoint and pretty-prints hits grouped by kind (Episodes, Profiles, Agent Cases/Skills, etc.).\n\n```bash\n# Default query about Alice's climbing:\n./scripts/check-memory.sh <api_key> <base_url>\n\n# Custom query:\n./scripts/check-memory.sh <api_key> <base_url> \"What routes does Alice prefer?\"\n\n# Optional: specify method and top_k after the query:\n./scripts/check-memory.sh <api_key> <base_url> \"climbing\" hybrid 10\n```\n\nRequired args `api_key` and `base_url` are the same as step 4a. `query`, `method` (`keyword` | `hybrid` | `vector`), and `top_k` are optional positional args. Run with no args for full usage.\n\nIf the first search comes back empty, wait 1–2 seconds for cascade indexing and retry.\n\n---\n\n### 5. Where your data lives\n\nAll memory is stored as human-readable Markdown under File Manager path `everos/<app_id>/<project_id>/`.\n\n```\neveros/\n├── everos.toml            ← provider config (restart after edit)\n├── ome.toml               ← OME strategy (hot-reloaded)\n├── .index/\n│   ├── sqlite/system.db   ← state & queues\n│   └── lancedb/           ← vector + BM25 indexes\n└── default_app/\n    └── default_project/\n        ├── users/alice/\n        │   ├── user.md\n        │   ├── episodes/       ← extracted episode Markdown\n        │   ├── .atomic_facts/\n        │   └── .foresights/\n        ├── agents/<agent_id>/\n        │   ├── agent.md\n        │   ├── .cases/         ← recorded agent trajectories\n        │   └── skills/         ← distilled procedural skills\n        └── knowledge/\n```\n\nMarkdown files are the source of truth — SQLite and LanceDB are derived indexes. Edit any `.md` file directly and the cascade watcher will re-sync the indexes within seconds.\n\n---\n\n### 6. Integrations\n\nDrop EverOS into any agent stack via:\n- `/api/v2/memory/add` → `/flush` → `/search` in your agent loop\n- Claude Code plugin (EverOS MCP server)\n- OpenAI / Anthropic SDK clients\n- MCP clients (Model Context Protocol)\n\nThe OpenAPI spec is available at `https://<app-domain>/openapi.json` and the interactive docs at `https://<app-domain>/docs`.\n",
                "changelog": "* initial build upstream 1.2.3\n",
                "website": "https://communityapps.appx.uk",
                "contactEmail": "support@appx.uk",
                "icon": "file://logo.png",
                "tags": [
                    "productivity",
                    "ai",
                    "memory"
                ],
                "iconUrl": "https://communityapps.appx.uk/cloudron-everos/logo.png",
                "packagerName": "@timconsidine",
                "packagerUrl": "https://communityapps.appx.uk",
                "minBoxVersion": "9.1.0",
                "mediaLinks": [
                    "https://communityapps.appx.uk/cloudron-everos/media/screenshot.jpg"
                ],
                "dockerImage": "forgejo.tcjc.uk/cca/cloudron-everos:0.0.8"
            },
            "creationDate": "Tue, 01 Sep 2026 15:55:48 GMT",
            "ts": "Tue, 01 Sep 2026 15:55:48 GMT",
            "publishState": "published"
        }
    }
}