Handbook
LLM providers and Forge Fleet probes
The Studio AI tray consumes the same /api/llm/*, /api/fleet/*, /api/sdlc-copilot/*, and OAuth-like helper routes documented in http-api-and-routes.html. Think of Forge Fleet as discovery + pooling for Forge-hosted…
What it is
The Studio AI tray consumes the same /api/llm/*, /api/fleet/*, /api/sdlc-copilot/*, and OAuth-like helper routes documented in http-api-and-routes.html. Think of Forge Fleet as discovery + pooling for Forge-hosted inference nodes, while the LLM stack tracks provider credentials, catalogs, telemetry, routing previews, and Ollama warm-up scripts.
When to use this guide
- You flipped
LENSES_EXPERIMENTAL_SDLC_COPILOTor Wizard flags but still cannot chat locally. - You need to sanity-check Forge Fleet meshes before enrolling Studio clients.
- You want assurance about what stays on disk (
.lenses-local) vs what never leaves127.0.0.1.
Prerequisites
| Requirement | Notes |
|---|---|
| Local Lenses checkout | ./scripts/run-lenses.sh on loopback (default 127.0.0.1:8080) |
| Optional Ollama | Set OLLAMA_BASE_URL; fall back to Forge Fleet / hosted models |
| Optional PAT / OIDC | Required when RBAC is enforced (lenses-access.json) |
Configure providers (happy path)
- Open Forge Studio (
/studio/) → Settings → AI. - Pick
/api/llm/providersentry that matches your transport (HTTP OpenAI-compat, Forge Fleet pooled node, mocked fixtures for offline demos). - Save via
POST /api/llm/settings— response should echo merged JSON with sanitized secrets (tokens never echoed verbatim). - Run
POST /api/llm/provider-probefor each profile you rely on nightly. - (Optional Fleet) Populate
POST /api/fleet/settingswith discovery subnets + bearer references, then hitPOST /api/fleet/discoverfollowed byPOST /api/fleet/node-detailfor each candidate.
Verify success by watching Studio banners fed from GET /api/llm/diagnostics and GET /api/llm/ollama-status.
Next steps: 11-wizard-301_04-cursor-launch-pack.html for packaging outputs, or http-api-and-routes.html for full JSON tables.
Data boundaries (local-first)
| Surface | Local-only? | Notes |
|---|---|---|
| Provider secrets | Yes | Stored under .lenses-local/; never mirrored to Git |
| Chat transcripts | Yes | SDLC copilot audit tail sdlc-copilot-audit.jsonl |
| Fleet discovery cache | Mostly | Stored alongside LLM blobs; prune via Studio reset |
| Hosted model traffic | Depends | Leaves loopback once you intentionally target cloud endpoints |
Treat LENSES_ALLOW_ACTIONS=1 as “this host now trusts LAN clients equally with localhost” — do not combine with unsecured Wi-Fi.