feat: sync with upstream — v1.2.0, in-app updates, Projects, modules
Brings the public tree back in line with the development repo after several weeks of drift caused by a stale publish include list. New: - In-app update path: GET /update/check compares the checkout against origin/main and POST /update/apply runs `ncp upgrade` detached (pull, rebuild, restart). The sidebar shows the version, checks on click, and offers an "update available" pill. - Projects: a project workspace groups chats and RAG documents, with per-project instructions and document retrieval scoped to the active project. Replaces the standalone Documents page. - modules/: auto-discovered feature plugins (mail, network) with their frontend counterparts and tests. - Memory curation runs in-process (synapse/memory/curator.py) on the chat model when a conversation goes idle. The separate memory service on :8001 is gone, along with the launcher lines that started it. Also: the KDE theme, panel and Promethean terminal assets, the full test suite, and VERSION 1.2.0. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
This commit is contained in:
@@ -5,8 +5,8 @@
|
||||
# NexusOS
|
||||
|
||||
**A local-first AI assistant platform.** Runs entirely on your machine — a
|
||||
Python/FastAPI backend, a bundled Ollama instance for inference, a persistent
|
||||
memory service, and a React frontend. No external AI provider is called.
|
||||
Python/FastAPI backend, a bundled Ollama instance for inference, persistent
|
||||
memory, and a React frontend. No external AI provider is called.
|
||||
|
||||
</div>
|
||||
|
||||
@@ -99,7 +99,7 @@ Linux distro, but I only support the Ubuntu/Linux Mint package base.
|
||||
# system packages, Ollama binary and the XFCE desktop wiring.
|
||||
./install.sh
|
||||
|
||||
# 2. Launch (memory :8001, backend :8000 — backend also serves the built UI)
|
||||
# 2. Launch (backend :8000 — it also serves the built UI)
|
||||
# The install symlinks ncp into /usr/local/bin (sudo); open a new shell first.
|
||||
ncp web
|
||||
```
|
||||
@@ -151,8 +151,7 @@ does all inference over HTTP).
|
||||
# Linux
|
||||
source Promethean/bin/activate
|
||||
|
||||
uvicorn synapse.main:sio_app --host 0.0.0.0 --port 8000 --reload # backend (serves the UI too)
|
||||
uvicorn synapse.memory.service:app --host 0.0.0.0 --port 8001 --reload # memory
|
||||
uvicorn synapse.main:sio_app --host 127.0.0.1 --port 8000 --reload # backend (serves the UI too)
|
||||
|
||||
# Frontend dev server (hot-reload) — only needed when editing the UI;
|
||||
# production serves the built dist/ from the backend at :8000.
|
||||
@@ -163,8 +162,7 @@ cd interface/web && npm run dev
|
||||
# Windows — needs the RemoteSigned policy from the Quick start step above
|
||||
Promethean\Scripts\Activate.ps1
|
||||
|
||||
uvicorn synapse.main:sio_app --host 0.0.0.0 --port 8000 --reload # backend (serves the UI too)
|
||||
uvicorn synapse.memory.service:app --host 0.0.0.0 --port 8001 --reload # memory
|
||||
uvicorn synapse.main:sio_app --host 127.0.0.1 --port 8000 --reload # backend (serves the UI too)
|
||||
```
|
||||
|
||||
### Promethean
|
||||
@@ -216,7 +214,7 @@ ncp help # see complete help tree
|
||||
|---|---|---|
|
||||
| **Promethean** (venv) | `Promethean/` | The Python venv all backend code runs in — `source Promethean/bin/activate` (Linux) / `Promethean\Scripts\python.exe` (Windows). Keeps deps out of the system Python. |
|
||||
| **Synapse** (backend) | `synapse/` | FastAPI app: `/chat/stream` (+ `/chat/approve` for gated tool calls), `/playbooks`, `/memory`, `/models`, `/documents`, `/projects`, `/conversations`, `/stt`, `/logs`, `/settings`, `/ollama`, `/frontend`, `/icons`. Assembles the system prompt: active playbook → reference playbooks → memory facts → relevant past snippets → matching documents → web search results. |
|
||||
| **Memory service** | `synapse/memory/` | Separate FastAPI app (:8001). `/memories/extract` uses an Ollama prompt to decide what to persist. Shares the SQLite DB with the backend. |
|
||||
| **Memory** | `synapse/memory/` | In-process, no second service or model: `curator.py` reads a conversation once it goes idle, `extractor.py` asks the chat model what is worth keeping, `store.py` merges it into the SQLite DB. |
|
||||
| **Documents / RAG** | `synapse/memory/store.py` | PDF/DOCX/TXT/MD ingest, chunked and embedded, retrieved via a sqlite-vec index; scoped per **Project** workspace. |
|
||||
| **Action tools** | `synapse/tools.py`, `synapse/search.py` | Read-only tools (search memory/history/documents, list models, get time) run automatically; `web_search`, `fetch_url`, and `remember` require per-call approval from the chat UI. |
|
||||
| **Playbooks** | `synapse/playbooks/` + `data/playbooks/` | Ordered `{id}.yaml` records managed by `PlaybookManager`; each can pin a chat model and a tool list. |
|
||||
@@ -233,7 +231,7 @@ are the exception (YAML files in `data/playbooks/`). All paths are defined in
|
||||
|
||||
## Layout
|
||||
|
||||
- `synapse/` — FastAPI backend + memory service + playbook/ollama managers
|
||||
- `synapse/` — FastAPI backend + memory curator + playbook/ollama managers
|
||||
- `modules/` — auto-discovered feature plugins
|
||||
- `interface/web/` — React + Vite frontend
|
||||
- `management/` — nexus-cli.sh, ncp API client, control panel, desktop theme
|
||||
|
||||
Reference in New Issue
Block a user