ltcai 1.4.0 → 1.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +125 -88
- package/docs/CHANGELOG.md +101 -0
- package/docs/images/architecture.png +0 -0
- package/docs/images/enterprise.png +0 -0
- package/docs/images/graph.png +0 -0
- package/docs/images/hero.gif +0 -0
- package/docs/images/model-recommendation.png +0 -0
- package/docs/images/onboarding.png +0 -0
- package/docs/images/organization.png +0 -0
- package/docs/images/skills.png +0 -0
- package/docs/images/tmp_frames/frame_00.png +0 -0
- package/docs/images/tmp_frames/frame_01.png +0 -0
- package/docs/images/tmp_frames/frame_02.png +0 -0
- package/docs/images/tmp_frames/frame_03.png +0 -0
- package/docs/images/tmp_frames/hero_00.png +0 -0
- package/docs/images/tmp_frames/hero_01.png +0 -0
- package/docs/images/tmp_frames/hero_02.png +0 -0
- package/docs/images/tmp_frames/hero_03.png +0 -0
- package/docs/images/workspace.png +0 -0
- package/latticeai/__init__.py +1 -1
- package/latticeai/api/admin.py +17 -0
- package/latticeai/api/models.py +16 -0
- package/latticeai/api/workspace.py +11 -0
- package/latticeai/core/enterprise_admin.py +158 -0
- package/latticeai/core/workspace_os.py +1 -1
- package/latticeai/services/model_catalog.py +289 -0
- package/latticeai/services/model_recommendation.py +183 -0
- package/latticeai/services/model_runtime.py +11 -263
- package/package.json +2 -2
- package/static/scripts/chat.js +66 -0
- package/static/scripts/workspace.js +260 -18
- package/static/workspace.css +67 -0
- package/static/workspace.html +83 -2
package/README.md
CHANGED
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
|
|
16
16
|
<br/>
|
|
17
17
|
|
|
18
|
-
<img src="
|
|
18
|
+
<img src="docs/images/hero.gif" alt="Lattice AI — AI Workspace OS for local-first graph, memory, and agents" width="100%"/>
|
|
19
19
|
</div>
|
|
20
20
|
|
|
21
21
|
---
|
|
@@ -36,80 +36,28 @@ Automatic knowledge graph
|
|
|
36
36
|
Graph-aware chat, snapshots, memory, agents, workflows, skills, and timeline
|
|
37
37
|
```
|
|
38
38
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
- **
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
- **
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
service layer (`latticeai/services/*`); `server_app` is now app assembly +
|
|
62
|
-
router include (~6,585 → ~5,948 lines)
|
|
63
|
-
- **Routers / services split** — `create_workspace_router`,
|
|
64
|
-
`create_health_router`, `WorkspaceService`, `ModelService`, `ChatService`
|
|
65
|
-
- **Workspace API service layer** — scope resolution and role/permission checks
|
|
66
|
-
centralized in `WorkspaceService`
|
|
67
|
-
- **Workspace / org guardrails** — non-members can't read/write org data,
|
|
68
|
-
viewers can't write, owners/admins manage members; no-auth local owner
|
|
69
|
-
fallback preserved
|
|
70
|
-
- **Health / model / chat modularization** — `/health`, `/mode`,
|
|
71
|
-
`/runtime_features`, `/engines` via the health router; chat trace recording
|
|
72
|
-
via the chat service (streaming behavior unchanged)
|
|
73
|
-
- **Compatibility preserved** — `server:app` import path, all API routes, CLI,
|
|
74
|
-
Knowledge Graph / Admin / Security routers, and VS Code integration unchanged
|
|
75
|
-
|
|
76
|
-
### New in 1.1.0: Organization Workspace Foundation
|
|
77
|
-
|
|
78
|
-
- **Organization Workspace** alongside Personal Workspace — create shared org
|
|
79
|
-
workspaces, list/switch between them, and archive (non-destructively)
|
|
80
|
-
- **Workspace roles & permissions** — `owner`, `admin`, `member`, `viewer`
|
|
81
|
-
mapped to read / write / manage-members / manage-workspace
|
|
82
|
-
- **Workspace-scoped data** — snapshots, memory, agent runs, workflows, traces,
|
|
83
|
-
and timeline carry a `workspace_id`; reads scope via the `X-Workspace-Id` header
|
|
84
|
-
- **CI / release hardening** — Node.js 24 ready workflow, version-scoped
|
|
85
|
-
artifact upload (never `dist/*`), and a release artifact validator
|
|
86
|
-
- **Enterprise extension foundation (open-core)** — a stable seam for a future
|
|
87
|
-
Enterprise plugin; Community ships everything it has today, unrestricted
|
|
88
|
-
(see [docs/ENTERPRISE.md](docs/ENTERPRISE.md) and
|
|
89
|
-
[docs/EDITION_STRATEGY.md](docs/EDITION_STRATEGY.md))
|
|
90
|
-
|
|
91
|
-
### New in 1.0.0: AI Workspace OS
|
|
92
|
-
|
|
93
|
-
- Workspace OS command center at `/workspace`
|
|
94
|
-
- First-run onboarding state API and UI
|
|
95
|
-
- Graph RAG answer traces with sources, nodes, edges, confidence, and jump links
|
|
96
|
-
- Local indexing dashboard with watcher state, success/failure counts, pause/resume/remove
|
|
97
|
-
- Workspace snapshots, Time Machine views, export, and Knowledge Diff
|
|
98
|
-
- Personal memory CRUD/search linked back to the graph
|
|
99
|
-
- Multi-agent graph entities and agent run history
|
|
100
|
-
- Relationship Explorer for inbound, outbound, related entities, and shortest path
|
|
101
|
-
- Local Computer Memory remains OFF by default and requires explicit approval
|
|
102
|
-
- Skill Marketplace registry with install, uninstall, update, enable, disable, and version state
|
|
103
|
-
- Workflow Graph for upload -> summarize -> generate -> export style work histories
|
|
104
|
-
- VS Code commands for Explain Selection, Refactor Selection, Generate Tests, Send To Lattice, and Ask About Current File
|
|
105
|
-
|
|
106
|
-
### Built for people who want
|
|
107
|
-
|
|
108
|
-
- a private AI workspace that runs from their own machine
|
|
109
|
-
- local model setup without hunting through many tools
|
|
110
|
-
- folder indexing that becomes useful AI memory
|
|
111
|
-
- a visual knowledge graph instead of disconnected files and chats
|
|
112
|
-
- optional team/admin controls for audit, permissions, and sensitive-data monitoring
|
|
39
|
+
## Why Lattice AI?
|
|
40
|
+
|
|
41
|
+
- **Local-first by default** — models, data, and your knowledge graph stay on your machine (`~/.ltcai/`); cloud is strictly opt-in.
|
|
42
|
+
- **Memory that compounds** — every chat, file, and folder you approve becomes durable, searchable context instead of being forgotten.
|
|
43
|
+
- **A graph, not a pile of files** — people, projects, documents, decisions, and tasks are linked automatically and explored visually.
|
|
44
|
+
- **One workspace, everywhere** — the same local knowledge powers the web UI, VS Code / Cursor, Telegram, and MCP clients.
|
|
45
|
+
- **Built-in governance** — Personal and Organization workspaces, roles, an audit timeline, and sensitive-data monitoring for teams.
|
|
46
|
+
|
|
47
|
+
## Core Capabilities
|
|
48
|
+
|
|
49
|
+
| Capability | What it does |
|
|
50
|
+
|---|---|
|
|
51
|
+
| 🧠 Automatic knowledge graph | Turns chats, files, and folders into linked nodes and edges, curated automatically |
|
|
52
|
+
| 💬 Graph-aware chat & agents | Answers and multi-step agents grounded in your indexed local memory |
|
|
53
|
+
| 🖥️ Local model recommendation | Scans your hardware and rates each model **Recommended / Compatible / Not Recommended** |
|
|
54
|
+
| 🗂️ Workspaces & roles | Personal and Organization workspaces with owner / admin / member / viewer permissions |
|
|
55
|
+
| 🧩 Skills & MCP | Install skills and connect MCP tools from the in-product marketplace |
|
|
56
|
+
| 🔒 Admin & security | Audit timeline, permission approvals, sensitive-data detection, exportable reports |
|
|
57
|
+
|
|
58
|
+
<div align="center">
|
|
59
|
+
<img src="docs/images/onboarding.png" alt="Onboarding flow: install, system scan, model recommendation, workspace, indexing, knowledge graph, first chat" width="100%"/>
|
|
60
|
+
</div>
|
|
113
61
|
|
|
114
62
|
---
|
|
115
63
|
|
|
@@ -171,6 +119,20 @@ LTCAI
|
|
|
171
119
|
|
|
172
120
|
---
|
|
173
121
|
|
|
122
|
+
## Architecture
|
|
123
|
+
|
|
124
|
+
`server:app` stays a thin compatibility entrypoint; the FastAPI app is assembled in
|
|
125
|
+
`latticeai/server_app.py`, and the work lives in focused API routers, a service
|
|
126
|
+
layer, and core modules — so the app shell never grows monolithic again.
|
|
127
|
+
|
|
128
|
+
<div align="center">
|
|
129
|
+
<img src="docs/images/architecture.png" alt="Lattice AI architecture — entrypoint, API routers, services, core, local engines and knowledge graph" width="100%"/>
|
|
130
|
+
</div>
|
|
131
|
+
|
|
132
|
+
See [docs/architecture.md](docs/architecture.md) for request and data-flow detail.
|
|
133
|
+
|
|
134
|
+
---
|
|
135
|
+
|
|
174
136
|
## Product Preview
|
|
175
137
|
|
|
176
138
|
<table>
|
|
@@ -193,6 +155,58 @@ LTCAI
|
|
|
193
155
|
</tr>
|
|
194
156
|
</table>
|
|
195
157
|
|
|
158
|
+
> Every image in this section is a **real screenshot** of the running app
|
|
159
|
+
> (Lattice AI v1.6.0), captured with a headless browser.
|
|
160
|
+
|
|
161
|
+
---
|
|
162
|
+
|
|
163
|
+
## Product Experience
|
|
164
|
+
|
|
165
|
+
### Onboard in minutes
|
|
166
|
+
|
|
167
|
+
A first run detects your OS, CPU, GPU, RAM, and disk, then recommends a local
|
|
168
|
+
model and rates every option **Recommended**, **Compatible**, or **Not
|
|
169
|
+
Recommended** for your machine — grouped by family (Gemma, Qwen, Llama, Phi,
|
|
170
|
+
DeepSeek, and more), with estimated RAM and a clear next step.
|
|
171
|
+
|
|
172
|
+
<div align="center">
|
|
173
|
+
<img src="docs/images/onboarding.png" alt="Onboarding hardware scan: OS, CPU, GPU, RAM, disk, runtime" width="49%"/>
|
|
174
|
+
<img src="docs/images/model-recommendation.png" alt="Local model recommendation with best-pick callout and per-family status" width="49%"/>
|
|
175
|
+
</div>
|
|
176
|
+
|
|
177
|
+
### Workspaces & organization
|
|
178
|
+
|
|
179
|
+
A **Current Workspace** card shows exactly where you are; switch instantly
|
|
180
|
+
between a **Personal** workspace and shared **Organization** workspaces. Org data
|
|
181
|
+
is scoped by `workspace_id`, and `owner / admin / member / viewer` roles map to a
|
|
182
|
+
transparent permission matrix with member management.
|
|
183
|
+
|
|
184
|
+
<div align="center">
|
|
185
|
+
<img src="docs/images/workspace.png" alt="Current Workspace summary card with scoped counts" width="100%"/>
|
|
186
|
+
<img src="docs/images/organization.png" alt="Organization workspace with members and roles" width="100%"/>
|
|
187
|
+
</div>
|
|
188
|
+
|
|
189
|
+
### Knowledge graph explorer
|
|
190
|
+
|
|
191
|
+
Your work becomes a typed knowledge graph automatically. The Entity Explorer
|
|
192
|
+
surfaces the most important entities and, on selection, their inbound/outbound
|
|
193
|
+
relationships, related entities, and a path back to you.
|
|
194
|
+
|
|
195
|
+
<div align="center">
|
|
196
|
+
<img src="docs/images/graph.png" alt="Knowledge graph entity explorer with relationship detail" width="100%"/>
|
|
197
|
+
</div>
|
|
198
|
+
|
|
199
|
+
### Skills & editions
|
|
200
|
+
|
|
201
|
+
Browse and install skills from an in-product marketplace; an honest editions
|
|
202
|
+
panel shows that every Enterprise capability is an opt-in extension point,
|
|
203
|
+
disabled in the open-source Community build.
|
|
204
|
+
|
|
205
|
+
<div align="center">
|
|
206
|
+
<img src="docs/images/skills.png" alt="Skill marketplace tabs: recommended, popular, installed, updates" width="49%"/>
|
|
207
|
+
<img src="docs/images/enterprise.png" alt="Enterprise capability status panel — all disabled in Community" width="49%"/>
|
|
208
|
+
</div>
|
|
209
|
+
|
|
196
210
|
---
|
|
197
211
|
|
|
198
212
|
## Why it is different
|
|
@@ -333,20 +347,29 @@ Supported routes include OpenAI-compatible APIs, OpenRouter, Groq, Together, xAI
|
|
|
333
347
|
|
|
334
348
|
## Current release
|
|
335
349
|
|
|
336
|
-
**1.
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
-
|
|
347
|
-
|
|
350
|
+
**1.6.0 — Product Experience Deepening.** A UX release: the screens in this README
|
|
351
|
+
are now real captured UI.
|
|
352
|
+
|
|
353
|
+
- **Knowledge Graph explorer** — entity cards, a relationship/related-entities/
|
|
354
|
+
shortest-path detail panel, recent activity, and a memory feed (additive UI on
|
|
355
|
+
existing endpoints)
|
|
356
|
+
- **Workspace UX** — a "Current Workspace" summary card with quick-switch chips
|
|
357
|
+
- **Model Recommendation 2.0** — machine summary, a best-pick callout with
|
|
358
|
+
estimated RAM and next step, per-family status, and a cloud caution
|
|
359
|
+
- **Skill Marketplace** — Recommended / Popular / Installed / Updates tabs
|
|
360
|
+
- **Enterprise capability panel** — an honest 12-capability matrix (Community: all
|
|
361
|
+
disabled, nothing gated)
|
|
362
|
+
- **Real screenshots** — `docs/images/*` refreshed from the running app; API,
|
|
363
|
+
schemas, `server:app`, CLI, MCP, and the Knowledge Graph contract unchanged
|
|
364
|
+
|
|
365
|
+
| Version | Theme |
|
|
366
|
+
|---|---|
|
|
367
|
+
| **1.6.0** | Product Experience Deepening (UX + real screenshots) |
|
|
368
|
+
| 1.5.0 | Unified Product Release (CI/VSIX recovery, model recommendation, Enterprise PoC) |
|
|
369
|
+
| 1.4.0 | Server App final decomposition |
|
|
370
|
+
| 1.1.0–1.3.0 | Organization workspaces, modularization, route safety net |
|
|
348
371
|
|
|
349
|
-
See the full [changelog](docs/CHANGELOG.md).
|
|
372
|
+
See the full [changelog](docs/CHANGELOG.md) and [RELEASE.md](RELEASE.md).
|
|
350
373
|
|
|
351
374
|
---
|
|
352
375
|
|
|
@@ -535,6 +558,20 @@ Full reference: [docs/mcp-tools.md](docs/mcp-tools.md)
|
|
|
535
558
|
|
|
536
559
|
---
|
|
537
560
|
|
|
561
|
+
## Documentation
|
|
562
|
+
|
|
563
|
+
| Doc | What's inside |
|
|
564
|
+
|---|---|
|
|
565
|
+
| [docs/architecture.md](docs/architecture.md) | App structure, request and data flow |
|
|
566
|
+
| [docs/CHANGELOG.md](docs/CHANGELOG.md) | Full version history |
|
|
567
|
+
| [RELEASE.md](RELEASE.md) | Release notes and the build/publish checklist |
|
|
568
|
+
| [SECURITY.md](SECURITY.md) | Security model and vulnerability reporting |
|
|
569
|
+
| [docs/ENTERPRISE.md](docs/ENTERPRISE.md) · [docs/EDITION_STRATEGY.md](docs/EDITION_STRATEGY.md) | Open-core boundary and edition strategy |
|
|
570
|
+
| [docs/kg-schema.md](docs/kg-schema.md) · [docs/mcp-tools.md](docs/mcp-tools.md) | Knowledge graph schema and MCP tool catalog |
|
|
571
|
+
| [docs/privacy.md](docs/privacy.md) · [docs/public-deploy.md](docs/public-deploy.md) · [docs/OPERATIONS.md](docs/OPERATIONS.md) | Privacy, public deployment, operations |
|
|
572
|
+
|
|
573
|
+
---
|
|
574
|
+
|
|
538
575
|
## Contributing
|
|
539
576
|
|
|
540
577
|
See [CONTRIBUTING.md](CONTRIBUTING.md). Issues and pull requests are welcome.
|
package/docs/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,106 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [1.6.0] - 2026-06-01
|
|
4
|
+
|
|
5
|
+
> Product Experience Deepening — user-facing UX (Knowledge Graph explorer,
|
|
6
|
+
> workspace summary, model recommendation 2.0, skill marketplace tabs, Enterprise
|
|
7
|
+
> capability panel) and a refresh of `docs/images/*` to **real captured UI**
|
|
8
|
+
> screenshots. Not a refactor: API paths, request/response schemas, `server:app`,
|
|
9
|
+
> CLI, MCP, and the Knowledge Graph contract are unchanged. The only code changes
|
|
10
|
+
> are additive frontend (`static/`) and version metadata.
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- **Knowledge Graph Explorer (Workspace OS)** — an Entity Explorer (importance-
|
|
15
|
+
ranked entity cards + search) with a detail panel showing inbound/outbound
|
|
16
|
+
relationships, related entities, and the shortest path back to you; plus a
|
|
17
|
+
Recent Activity feed and a Workspace Memory feed. Built entirely on the existing
|
|
18
|
+
`/knowledge-graph/graph` and `/workspace/relationships/*` endpoints (additive
|
|
19
|
+
UI, no new API, no schema change).
|
|
20
|
+
- **Workspace summary & quick-switch** — a "Current Workspace" card (active
|
|
21
|
+
workspace, role, members, scoped counts) and one-click switch chips, preserving
|
|
22
|
+
`workspace_id` scoping and the owner/admin/member/viewer model.
|
|
23
|
+
- **Model Recommendation 2.0** — the onboarding recommendation panel now shows a
|
|
24
|
+
machine summary (OS/RAM/GPU/engine), a "best for this PC" callout with the
|
|
25
|
+
reason, estimated RAM, and next step, per-family status, and a cloud caution.
|
|
26
|
+
Estimates are labelled and conservative.
|
|
27
|
+
- **Skill Marketplace tabs** — Recommended / Popular / Installed / Updates tabs
|
|
28
|
+
with version, category, and source, plus install / enable / disable actions on
|
|
29
|
+
the existing skill lifecycle API.
|
|
30
|
+
- **Enterprise capability panel** — a 12-capability status matrix in Workspace OS
|
|
31
|
+
(Community reports all disabled; nothing gates a Community feature).
|
|
32
|
+
|
|
33
|
+
### Changed
|
|
34
|
+
|
|
35
|
+
- **Real UI visuals** — `docs/images/{hero.gif,onboarding,model-recommendation,
|
|
36
|
+
workspace,graph,organization,skills,enterprise}` are now **real screenshots**
|
|
37
|
+
captured from the running app with Playwright + headless Chrome (the v1.5.0
|
|
38
|
+
set was structural diagrams). `architecture.png` remains a structural diagram.
|
|
39
|
+
README references the new real screenshots with no broken links.
|
|
40
|
+
- Python package, npm package, VS Code extension, FastAPI app, and `/health`
|
|
41
|
+
version metadata aligned at `1.6.0`.
|
|
42
|
+
|
|
43
|
+
### Validation
|
|
44
|
+
|
|
45
|
+
- Unit tests pass; route-compatibility, startup/import, streaming, model-endpoint,
|
|
46
|
+
MCP/KG, and workspace/org permission tests preserved; `npm run check:python`
|
|
47
|
+
green; new UI verified rendering in a real browser via Playwright; VSIX build
|
|
48
|
+
verified. Test/build/packaging artifacts only — no package-store publish.
|
|
49
|
+
|
|
50
|
+
## [1.5.0] - 2026-06-01
|
|
51
|
+
|
|
52
|
+
> Unified Product Release — CI/VSIX recovery, hardware-aware local model
|
|
53
|
+
> recommendation, model-catalog extraction, an Enterprise PoC seam, and a
|
|
54
|
+
> product-page README with an up-to-date architecture diagram. The public route
|
|
55
|
+
> contract, schemas, `server:app`, CLI, UI, and VS Code integration are
|
|
56
|
+
> unchanged.
|
|
57
|
+
|
|
58
|
+
### Fixed
|
|
59
|
+
|
|
60
|
+
- **VSIX / `npm ci` (ETARGET)** — `vscode-extension/package-lock.json` pinned a
|
|
61
|
+
non-existent `@azure/core-tracing@^1.4.0` (the registry's latest is `1.3.1`),
|
|
62
|
+
breaking `npm ci` and the GitHub Actions VSIX build. The lockfile is
|
|
63
|
+
regenerated so the published `^1.3.0` ranges resolve; `npm ci` → `npm run
|
|
64
|
+
compile` → `vsce package` is green again.
|
|
65
|
+
|
|
66
|
+
### Added
|
|
67
|
+
|
|
68
|
+
- **Local model recommendation** — `latticeai/services/model_recommendation.py`
|
|
69
|
+
classifies the model catalog into **recommended / compatible / not_recommended**
|
|
70
|
+
from a detected system profile (OS/RAM/CPU/GPU/disk), grouped by family
|
|
71
|
+
(Gemma, Qwen, Llama, Phi, DeepSeek, …). Exposed at `GET /models/recommendations`
|
|
72
|
+
and folded into `/workspace/onboarding/model-recommendations` as a `catalog`
|
|
73
|
+
field. Covered by `tests/unit/test_model_recommendation.py`.
|
|
74
|
+
- **Enterprise PoC surfaces** — `latticeai/core/enterprise_admin.py` plus
|
|
75
|
+
`GET /admin/enterprise` and `GET /admin/enterprise/siem-export` provide admin
|
|
76
|
+
policy, audit-export, SIEM-export-stub, and organization-settings views built
|
|
77
|
+
on the existing capability seam. Community reports every Enterprise capability
|
|
78
|
+
as disabled and never gates a Community feature
|
|
79
|
+
(`tests/unit/test_enterprise_admin.py`).
|
|
80
|
+
- **DeepSeek family** — added to the Ollama and llama.cpp catalogs with
|
|
81
|
+
identifiers chosen so the version-dedup filter is unaffected.
|
|
82
|
+
|
|
83
|
+
### Changed
|
|
84
|
+
|
|
85
|
+
- **Model catalog extraction** — the static catalog (`ENGINE_MODEL_CATALOG`,
|
|
86
|
+
`ENGINE_INSTALLERS`, `MODEL_ENGINE_ALIASES`) and the pure version-dedup helpers
|
|
87
|
+
moved to `latticeai/services/model_catalog.py`, re-exported by `model_runtime`
|
|
88
|
+
for backward compatibility. `model_runtime.py` shrank from 1,973 to 1,721 lines
|
|
89
|
+
(`tests/unit/test_model_catalog.py` pins the re-export identity).
|
|
90
|
+
- **README rewritten as a product page** — Why / Core Capabilities / Quick Start
|
|
91
|
+
/ Architecture / Current Release / Documentation, with structural diagrams
|
|
92
|
+
(`docs/images/*`) and a current architecture diagram. Historical "New in 1.x"
|
|
93
|
+
marketing blocks were removed from the README top (this changelog remains the
|
|
94
|
+
version history).
|
|
95
|
+
- Python package, npm package, VS Code extension, FastAPI app, and `/health`
|
|
96
|
+
version metadata aligned at `1.5.0`.
|
|
97
|
+
|
|
98
|
+
### Validation
|
|
99
|
+
|
|
100
|
+
- 266 unit tests pass; route-compatibility, import/startup, streaming, model
|
|
101
|
+
endpoint, MCP/KG contract tests preserved; `npm run check:python` green; VSIX
|
|
102
|
+
build verified. Test/build/packaging artifacts only — no package-store publish.
|
|
103
|
+
|
|
3
104
|
## [1.4.0] - 2026-05-31
|
|
4
105
|
|
|
5
106
|
> Server App Final Decomposition — chat, model runtime, tools/local/CU,
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/latticeai/__init__.py
CHANGED
package/latticeai/api/admin.py
CHANGED
|
@@ -184,4 +184,21 @@ def create_admin_router(
|
|
|
184
184
|
)
|
|
185
185
|
return public_sso_config(saved)
|
|
186
186
|
|
|
187
|
+
@router.get("/admin/enterprise")
|
|
188
|
+
async def admin_enterprise_overview(request: Request):
|
|
189
|
+
"""Enterprise PoC surface: edition matrix, admin policies, audit export,
|
|
190
|
+
SIEM stub, and org-governance capabilities. Community reports every
|
|
191
|
+
Enterprise capability as disabled and never gates Community features."""
|
|
192
|
+
require_admin(request)
|
|
193
|
+
from latticeai.core.enterprise_admin import poc_overview
|
|
194
|
+
return poc_overview()
|
|
195
|
+
|
|
196
|
+
@router.get("/admin/enterprise/siem-export")
|
|
197
|
+
async def admin_enterprise_siem_export(request: Request):
|
|
198
|
+
"""Preview the SIEM export envelope. In Community this is a stub
|
|
199
|
+
(``streamed=false``) — no events are pushed to an external SIEM."""
|
|
200
|
+
require_admin(request)
|
|
201
|
+
from latticeai.core.enterprise_admin import siem_export_stub
|
|
202
|
+
return siem_export_stub()
|
|
203
|
+
|
|
187
204
|
return router
|
package/latticeai/api/models.py
CHANGED
|
@@ -304,4 +304,20 @@ def create_models_router(
|
|
|
304
304
|
_router.unload_all()
|
|
305
305
|
return {"status": "ok", "unloaded": unloaded}
|
|
306
306
|
|
|
307
|
+
@router.get("/models/recommendations")
|
|
308
|
+
async def model_recommendations(request: Request, engine: str = "local_mlx"):
|
|
309
|
+
"""Hardware-aware tri-state model recommendation for this machine.
|
|
310
|
+
|
|
311
|
+
Detects the system profile (OS/RAM/CPU/GPU/disk) and classifies the
|
|
312
|
+
``engine`` catalog into recommended / compatible / not_recommended,
|
|
313
|
+
grouped by family. Used by the onboarding and model-picker UIs.
|
|
314
|
+
"""
|
|
315
|
+
require_user(request)
|
|
316
|
+
from auto_setup import probe as auto_setup_probe
|
|
317
|
+
from latticeai.services.model_recommendation import recommend_catalog
|
|
318
|
+
|
|
319
|
+
profile = await asyncio.to_thread(lambda: auto_setup_probe().to_json())
|
|
320
|
+
catalog = recommend_catalog(profile, engine=engine)
|
|
321
|
+
return {"profile": profile, "recommendations": catalog}
|
|
322
|
+
|
|
307
323
|
return router
|
|
@@ -262,9 +262,20 @@ def create_workspace_router(
|
|
|
262
262
|
require_user(request)
|
|
263
263
|
env = await asyncio.to_thread(scan_environment)
|
|
264
264
|
recommendations = get_recommendations(env)
|
|
265
|
+
# Tri-state, family-grouped catalog (recommended / compatible /
|
|
266
|
+
# not_recommended) for this machine, used by the onboarding model step.
|
|
267
|
+
catalog = None
|
|
268
|
+
try:
|
|
269
|
+
from auto_setup import probe as auto_setup_probe
|
|
270
|
+
from latticeai.services.model_recommendation import recommend_catalog
|
|
271
|
+
profile = await asyncio.to_thread(lambda: auto_setup_probe().to_json())
|
|
272
|
+
catalog = recommend_catalog(profile, engine="local_mlx")
|
|
273
|
+
except Exception as exc: # pragma: no cover - recommendation is best-effort
|
|
274
|
+
logging.warning("model recommendation catalog failed: %s", exc)
|
|
265
275
|
payload = {
|
|
266
276
|
"environment": env,
|
|
267
277
|
"recommendations": recommendations,
|
|
278
|
+
"catalog": catalog,
|
|
268
279
|
"default_local_model": LOCAL_MODEL,
|
|
269
280
|
"default_public_model": PUBLIC_MODEL,
|
|
270
281
|
}
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
"""Enterprise PoC surfaces (admin policies, audit export, SIEM stub, org settings).
|
|
2
|
+
|
|
3
|
+
This module is **structure only** — it prepares concrete, discoverable shapes for
|
|
4
|
+
Enterprise governance features while keeping the open-source Community edition
|
|
5
|
+
fully functional and ungated. Every capability here is consulted through
|
|
6
|
+
:data:`latticeai.core.enterprise.capability_registry`; in the Community build
|
|
7
|
+
each is reported ``enabled=False`` and the Community behaviour (local audit
|
|
8
|
+
export, the four base roles, single-tenant local storage) is always available.
|
|
9
|
+
|
|
10
|
+
Nothing in this module restricts a Community feature. It answers "what *would*
|
|
11
|
+
an Enterprise provider light up, and is it active?" so the admin UI can show an
|
|
12
|
+
honest edition/capability matrix and a SIEM export *preview envelope* without
|
|
13
|
+
shipping any Enterprise implementation.
|
|
14
|
+
"""
|
|
15
|
+
|
|
16
|
+
from __future__ import annotations
|
|
17
|
+
|
|
18
|
+
from typing import Any, Dict, List, Optional
|
|
19
|
+
|
|
20
|
+
from latticeai.core.enterprise import (
|
|
21
|
+
EnterpriseCapability,
|
|
22
|
+
capability_registry,
|
|
23
|
+
)
|
|
24
|
+
|
|
25
|
+
COMMUNITY_NOTICE = (
|
|
26
|
+
"Community edition: this is an Enterprise extension point and is not "
|
|
27
|
+
"enforced. Local-first behaviour is always available. See "
|
|
28
|
+
"docs/ENTERPRISE.md and docs/EDITION_STRATEGY.md."
|
|
29
|
+
)
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
def _cap(capability: EnterpriseCapability) -> bool:
|
|
33
|
+
return capability_registry.is_capability_enabled(capability)
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
def admin_policies() -> Dict[str, Any]:
|
|
37
|
+
"""Admin policy-pack status + the effective (open) Community policy."""
|
|
38
|
+
enabled = _cap(EnterpriseCapability.ADMIN_POLICY_PACKS)
|
|
39
|
+
return {
|
|
40
|
+
"capability": EnterpriseCapability.ADMIN_POLICY_PACKS.value,
|
|
41
|
+
"enabled": enabled,
|
|
42
|
+
"enforced": enabled,
|
|
43
|
+
"effective_policy": {
|
|
44
|
+
# Community defaults — descriptive, not enforced by a policy engine.
|
|
45
|
+
"base_roles": ["owner", "admin", "member", "viewer"],
|
|
46
|
+
"local_file_access": "approval-token gated (per path/user/action)",
|
|
47
|
+
"package_install": "admin-only with audit trail",
|
|
48
|
+
"network_binding": "127.0.0.1 by default",
|
|
49
|
+
"managed_policy_packs": [] if not enabled else "provided-by-enterprise",
|
|
50
|
+
},
|
|
51
|
+
"note": COMMUNITY_NOTICE,
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
def audit_export_descriptor() -> Dict[str, Any]:
|
|
56
|
+
"""What audit export is available locally vs. via Enterprise SIEM streaming."""
|
|
57
|
+
siem_enabled = _cap(EnterpriseCapability.SIEM_EXPORT)
|
|
58
|
+
retention_enabled = _cap(EnterpriseCapability.COMPLIANCE_RETENTION)
|
|
59
|
+
return {
|
|
60
|
+
"local_export": {
|
|
61
|
+
"available": True,
|
|
62
|
+
"endpoint": "/admin/security/export",
|
|
63
|
+
"formats": ["json", "csv", "xlsx", "txt", "pdf"],
|
|
64
|
+
"note": "Community local audit export is always available to admins.",
|
|
65
|
+
},
|
|
66
|
+
"siem_streaming": {
|
|
67
|
+
"capability": EnterpriseCapability.SIEM_EXPORT.value,
|
|
68
|
+
"enabled": siem_enabled,
|
|
69
|
+
"note": COMMUNITY_NOTICE,
|
|
70
|
+
},
|
|
71
|
+
"compliance_retention": {
|
|
72
|
+
"capability": EnterpriseCapability.COMPLIANCE_RETENTION.value,
|
|
73
|
+
"enabled": retention_enabled,
|
|
74
|
+
"note": COMMUNITY_NOTICE,
|
|
75
|
+
},
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
def siem_export_stub(events: Optional[List[Dict[str, Any]]] = None) -> Dict[str, Any]:
|
|
80
|
+
"""A preview of the envelope an Enterprise SIEM exporter would emit.
|
|
81
|
+
|
|
82
|
+
In the Community build this is a *stub*: it returns the envelope *shape*
|
|
83
|
+
(so integrators can see the contract) but ``streamed=False`` and no events
|
|
84
|
+
are actually pushed to an external SIEM.
|
|
85
|
+
"""
|
|
86
|
+
enabled = _cap(EnterpriseCapability.SIEM_EXPORT)
|
|
87
|
+
sample = events or [
|
|
88
|
+
{
|
|
89
|
+
"id": "evt_sample",
|
|
90
|
+
"type": "audit_event",
|
|
91
|
+
"timestamp": "1970-01-01T00:00:00Z",
|
|
92
|
+
"actor": "admin@example.com",
|
|
93
|
+
"action": "model_load",
|
|
94
|
+
"severity": "informational",
|
|
95
|
+
}
|
|
96
|
+
]
|
|
97
|
+
envelope = {
|
|
98
|
+
"format": "ltcai.siem.v1",
|
|
99
|
+
"encoding": "ndjson",
|
|
100
|
+
"vendor": "LatticeAI",
|
|
101
|
+
"product": "Workspace OS",
|
|
102
|
+
"records": [
|
|
103
|
+
{
|
|
104
|
+
"ts": e.get("timestamp"),
|
|
105
|
+
"actor": e.get("actor"),
|
|
106
|
+
"act": e.get("action"),
|
|
107
|
+
"sev": e.get("severity", "informational"),
|
|
108
|
+
"kind": e.get("type"),
|
|
109
|
+
"id": e.get("id"),
|
|
110
|
+
}
|
|
111
|
+
for e in sample
|
|
112
|
+
],
|
|
113
|
+
}
|
|
114
|
+
return {
|
|
115
|
+
"capability": EnterpriseCapability.SIEM_EXPORT.value,
|
|
116
|
+
"enabled": enabled,
|
|
117
|
+
"streamed": False if not enabled else True,
|
|
118
|
+
"destination": None if not enabled else "configured-by-enterprise",
|
|
119
|
+
"preview_envelope": envelope,
|
|
120
|
+
"note": COMMUNITY_NOTICE,
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
def organization_settings() -> Dict[str, Any]:
|
|
125
|
+
"""Org-scale governance capabilities and their (Community=off) state."""
|
|
126
|
+
governance_caps = [
|
|
127
|
+
EnterpriseCapability.TENANT_ISOLATION,
|
|
128
|
+
EnterpriseCapability.RBAC_ABAC_ADVANCED,
|
|
129
|
+
EnterpriseCapability.SCIM,
|
|
130
|
+
EnterpriseCapability.IDP_PROVISIONING,
|
|
131
|
+
EnterpriseCapability.SSO_ADVANCED,
|
|
132
|
+
EnterpriseCapability.DLP_POLICY,
|
|
133
|
+
EnterpriseCapability.EDISCOVERY,
|
|
134
|
+
EnterpriseCapability.PRIVATE_VPC,
|
|
135
|
+
EnterpriseCapability.AIR_GAPPED_DEPLOYMENT,
|
|
136
|
+
]
|
|
137
|
+
return {
|
|
138
|
+
"community_baseline": {
|
|
139
|
+
"workspaces": ["personal", "organization"],
|
|
140
|
+
"roles": ["owner", "admin", "member", "viewer"],
|
|
141
|
+
"data_isolation": "single-tenant local storage (~/.ltcai)",
|
|
142
|
+
},
|
|
143
|
+
"governance_capabilities": {
|
|
144
|
+
cap.value: _cap(cap) for cap in governance_caps
|
|
145
|
+
},
|
|
146
|
+
"note": COMMUNITY_NOTICE,
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
def poc_overview() -> Dict[str, Any]:
|
|
151
|
+
"""Combined Enterprise PoC surface for the admin dashboard."""
|
|
152
|
+
return {
|
|
153
|
+
"edition": capability_registry.describe(),
|
|
154
|
+
"admin_policies": admin_policies(),
|
|
155
|
+
"audit_export": audit_export_descriptor(),
|
|
156
|
+
"siem_export": siem_export_stub(),
|
|
157
|
+
"organization_settings": organization_settings(),
|
|
158
|
+
}
|
|
@@ -18,7 +18,7 @@ from pathlib import Path
|
|
|
18
18
|
from typing import Any, Callable, Dict, Iterable, List, Optional
|
|
19
19
|
|
|
20
20
|
|
|
21
|
-
WORKSPACE_OS_VERSION = "1.
|
|
21
|
+
WORKSPACE_OS_VERSION = "1.6.0"
|
|
22
22
|
|
|
23
23
|
# Workspace types separate single-user Personal workspaces from shared
|
|
24
24
|
# Organization workspaces. Both keep the same local-first JSON store; the type
|