You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/01-overview.md
+20-17Lines changed: 20 additions & 17 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,11 +1,12 @@
1
1
# System overview
2
2
3
-
This document describes the current AILSS runtime and the transition baseline established by
4
-
issue #175.
3
+
This document describes the current AILSS runtime established through issues #175, #179,
4
+
and #181.
5
5
6
-
Today, the implemented system is split into **three parts**. The next baseline keeps those
7
-
parts in place while adding a Python-first local backend surface for retrieval, agent
8
-
orchestration, evaluation, and lightweight observability.
6
+
Today, the implemented system is split into **three current runtime parts** backed by the
7
+
Python service app in `apps/api`: the indexer, the localhost MCP service, and the
8
+
Obsidian plugin shell. `packages/core` remains a shared TypeScript utility package, not a
9
+
launched runtime service.
9
10
10
11
## 1) Indexer
11
12
@@ -71,7 +72,8 @@ Transport / client integration:
71
72
- Drop cached session ID
72
73
- Send a fresh `initialize` request to obtain a new `Mcp-Session-Id`
73
74
- Retry the original request once with the new session ID
74
-
- Local dev still supports running the MCP server over stdio (CLI).
75
+
- Local dev can run the Python MCP service directly from the CLI
76
+
(`uv run --directory apps/api ailss-mcp-http`).
75
77
- Optional shutdown endpoint (disabled by default):
76
78
- If `AILSS_MCP_HTTP_SHUTDOWN_TOKEN` is set (or `startAilssMcpHttpServer({ shutdown: { token } })` is used), the server exposes `POST /__ailss/shutdown`.
77
79
- This endpoint requires the shutdown token (separate from the normal MCP request token) and shuts down the HTTP server + all MCP sessions.
@@ -110,11 +112,11 @@ Write tools are gated and not exposed by default:
110
112
Responsibilities:
111
113
112
114
- Display recommendations in a UI.
113
-
- Center the local runtime around the Python backend for health, retrieval, agent, eval,
114
-
and status flows.
115
+
- Center the local runtime around the Python backend, Python MCP service, and Python
116
+
indexer in `apps/api`.
115
117
- Keep the local index DB up to date (manual reindex and optional debounced auto-index).
116
-
-Treat the MCP transport and existing indexer as transition components while the current
117
-
migration remains in progress.
118
+
-Keep explicit launch overrides available for users who need custom `uv run --directory
119
+
... apps/api` paths.
118
120
- Only perform vault writes when explicitly requested (for example an MCP write tool call with `apply=true`).
119
121
- Applying changes can be implemented either via the Obsidian Vault API or via direct filesystem writes (but must remain gated and auditable).
120
122
@@ -124,19 +126,20 @@ Responsibilities:
124
126
- Recommendation = DB read
125
127
- Apply = file write; requires an explicit action (Obsidian UI or MCP write tool with `apply=true`, including `capture_note`/`edit_note`).
126
128
127
-
## Transition baseline (issue #175)
129
+
## Current runtime baseline
128
130
129
131
- Obsidian plugin remains the local UX shell and launcher.
130
-
- Existing Node/TypeScript packages remain the transition baseline for indexing, MCP
131
-
transport, and gated vault writes.
132
-
- The Python-first backend surface now owns the local API contracts for retrieval, agent
132
+
-`apps/api` owns the shipped local runtime for indexing, MCP transport, retrieval, agent
133
133
orchestration, evaluation, and lightweight observability.
134
-
- Plugin startup, status, and troubleshooting flows should center on that Python backend
135
-
surface while the Node-owned components remain explicit transition layers.
134
+
-`packages/core` remains the shared TypeScript utility/schema package, not an
135
+
independently launched service.
136
+
- Plugin startup, status, and troubleshooting flows center on the Python-owned runtime.
136
137
- The current backend contract is `GET /health`, `POST /retrieve`, `POST /agent/run`, and
137
138
`POST /eval/run`, with plugin-managed lifecycle plus a guarded shutdown path for stale
138
139
local processes.
139
140
- Local-first, single-user scope remains the project boundary for this phase.
140
141
141
142
See `docs/architecture/python-first-local-agent-backend.md` for the service boundaries,
142
-
contract details, and acceptance criteria.
143
+
contract details, and acceptance criteria. See
144
+
`docs/architecture/legacy-node-typescript-runtime-removal.md` for the retirement record of
- Python-first local agent baseline: [architecture/python-first-local-agent-backend.md](./architecture/python-first-local-agent-backend.md)
26
+
- Python-owned local runtime architecture: [architecture/python-first-local-agent-backend.md](./architecture/python-first-local-agent-backend.md)
27
27
- Python parity for MCP tool surface: [architecture/python-mcp-parity.md](./architecture/python-mcp-parity.md)
28
-
-Staged removal of the legacy Node/TypeScript runtime path: [architecture/legacy-node-typescript-runtime-removal.md](./architecture/legacy-node-typescript-runtime-removal.md)
0 commit comments