From 289324317a46cf293767689e923aeaee4984d292 Mon Sep 17 00:00:00 2001 From: Jeremy Anderson Date: Sun, 30 Aug 2026 12:39:02 -0400 Subject: [PATCH] AI-LSC v3.3.0 - fixed catagories, fixed git pulls --- CHANGES.md | 251 + README.md | 24 +- TODO.md | 35 +- apply_taxonomy_migration.py | 300 + docs/REGISTRY-URLS-v3.3.0.md | 164 + gitcommit | 210 +- pyproject.toml | 2 +- quickstart.md | 2 +- scripts/apply_10layer_taxonomy.py | 913 +++ src/ai_lsc/constants.py | 215 +- src/ai_lsc/registry/defaults.py | 4883 ++++++++--------- src/ai_lsc/registry/layers/development.py | 206 +- src/ai_lsc/registry/layers/devops.py | 154 +- src/ai_lsc/registry/layers/gpu.py | 22 +- src/ai_lsc/registry/layers/host_platform.py | 102 +- src/ai_lsc/registry/layers/inference.py | 78 +- .../registry/layers/knowledge_management.py | 234 +- src/ai_lsc/registry/layers/observability.py | 95 +- src/ai_lsc/registry/layers/orchestrators.py | 323 +- src/ai_lsc/registry/layers/routing.py | 40 +- src/ai_lsc/registry/layers/security.py | 54 +- src/ai_lsc/registry/layers/user_interfaces.py | 212 +- .../stack_templates/local-coder-mesh.json | 0 src/ai_lsc/registry/validator.py | 7 +- src/ai_lsc/runtime/installer.py | 98 +- src/ai_lsc/stack/connections.py | 277 +- src/ai_lsc/ui/pages/db_manager.py | 353 +- .../ui/pages/db_manager_category_map.py | 226 + whatremains.txt | 6 +- 29 files changed, 5732 insertions(+), 3754 deletions(-) create mode 100755 apply_taxonomy_migration.py create mode 100644 docs/REGISTRY-URLS-v3.3.0.md create mode 100755 scripts/apply_10layer_taxonomy.py mode change 100644 => 100755 src/ai_lsc/registry/layers/routing.py mode change 100644 => 100755 src/ai_lsc/registry/stack_templates/local-coder-mesh.json create mode 100755 src/ai_lsc/ui/pages/db_manager_category_map.py diff --git a/CHANGES.md b/CHANGES.md index 44503cf..0e0f0f3 100755 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,5 +1,256 @@ # AI-LSC Changelog +## v3.3 — Registry git-URL sync + bandwidth-aware git-pull + ComfyUI + +Patch release over v3.2. No schema changes, no UI reorganisation, no +wiring-graph churn — only the 10-layer registry's installer URLs are +touched, plus the git install/update logic in `runtime/installer.py`, +plus a new ComfyUI registry entry, plus version strings and a per-file +change log. + +### What changed + +The 10-layer registry layer files had drifted from the systems-architect +reference (`ai-stack-guide-v12.md`, "Approaching the Local AI Stack Like +a Systems Architect" by Jeremy Anderson). 52 installer URLs were either +pointing at placeholder repos (`github.com/nicely-done/`, +clearly never intended to ship) or at wrong upstreams (e.g. `airllm` +pointed at `liguodongiot/llm-airforce`; `llamacpp` pointed at +`ggerganov/llama.cpp` instead of the current `ggml-org/llama.cpp`). +Three tools the v12 md lists as `git` / `git_node` (pm_skills, agno, +openhands) were registered as `uv` package-manager installs — wrong, +since the user manually tested every entry in the md by cloning the +github repo. Four registry-only tools (algory, atlas_os, eagle_eye, +glassmind) had only placeholder URLs because web search could not +find their official upstreams; the user provided the URLs directly. +ComfyUI was referenced in the `ai-image-gen-local.json` stack template +but had no registry entry. + +This release: +- Brings every git-ish installer into agreement with the v12 reference. +- Adds `pkg` fields to the 6 script-type installers that reference + github release tarballs. +- Resolves 10 registry-only git tools to their official upstreams via + web search. +- Switches the 3 type-mismatch tools to proper git/git_node installs. +- Resolves the 4 previously-unresolved registry-only tools to the + user-provided official upstreams. +- Adds a ComfyUI registry entry (Level 10, `git:comfy-org/comfyui`). +- Hardens the git installer runtime to be bandwidth-aware. + +### Five categories of patches (52 total) + +- **A (28)** — `git` / `git_node` / `custom` installer `pkg` URL + corrected to match the v12 markdown reference. See + `docs/REGISTRY-URLS-v3.3.0.md` for the per-file old → new URL table. +- **B (6)** — `script`-type installers (fabric, grafana_alloy, + llamafile, meilisearch, ollama, qdrant) get a new `pkg` field + referencing the github repo, while the existing working `cmd` + (curl release tarball, etc.) is left untouched. +- **C (10)** — registry-only git tools with no v12 markdown entry + resolved via web search: + - `agent_reach` → `Panniantong/Agent-Reach` + - `everos_memory` → `EverMind-AI/EverOS` + - `headroom` → `headroomlabs-ai/headroom` + - `mnemo_cortex` → `GuyMannDude/mnemo-cortex` + - `nightshift` → `johndaskovsky/nightshift` + - `openbrain` → `NateBJones-Projects/OB1` + - `turbovec` → `ryancodrai/turbovec` + - `crossplane` → `crossplane/crossplane` + - `keycloak` → `keycloak/keycloak` + - `dma` → `distcc/distcc` (closest parent project; DMA has no + separate public repo) +- **D (3)** — type-mismatch fixes (md says git / git_node, registry had + `uv` with package name): + - `pm_skills` → `git:https://github.com/product-on-purpose/pm-skills` + - `agno` → `git:https://github.com/agno-agi/agno` + - `openhands` → `git_node:https://github.com/All-Hands-AI/OpenHands.git` +- **E (4)** — user-provided URLs for the 4 previously-unresolved + registry-only tools (web search could not find these; the user + provided the official upstream URLs directly): + - `algory` → `aryaghan-mutum/algory` + - `atlas_os` → `atlas-os/atlas` + - `eagle_eye` → `thoughtfuldev/eagleeye` + - `glassmind` → `khodges42/glassMind` + +### New tool entry (1) + +- **ComfyUI** (`user_interfaces.py`): ComfyUI was referenced in the + `ai-image-gen-local.json` stack template but had no registry entry + before. Added as a Level 10 (Human Interface & System Operations) + tool with installer `git:https://github.com/comfy-org/comfyui`, + launcher `python main.py --listen 0.0.0.0 --port 8188`, deps + `[cuda]`, license GPL-3.0. Total registry size is now 187 tools + (was 186). + +### Runtime: bandwidth-aware git-pull-on-update + +`runtime/installer.py`'s `install_git` and `install_git_node` already +ran `git pull --ff-only` if the destination dir existed, but the +existence check was `os.path.exists(dest)` — True for any dir, not +just a git working tree. An empty or non-git dir at the destination +would cause `git pull` to fail and abort the install. Hardened: + +1. Check `os.path.isdir(dest/.git)` to confirm a real git repo. +2. On pull failure (diverged branches, network errors, corrupted + index, etc.), move the old dir aside to `.bak.` + and re-clone fresh — so the install always ends in a usable state + instead of leaving a half-broken tree. +3. If the dest dir exists but is not a git repo, back it up and clone + fresh. +4. Log clearly which path was taken (pulled / re-cloned / new clone / + non-git-dir backed up). + +**Effect:** re-running install on a tool that's already cloned only +fetches the diff (a few KB / MB), not the entire repo. This is the +bandwidth-saving behaviour the user asked for. + +### Intentionally NOT touched + +- `apex` (md says `pip — https://github.com/NVIDIA/apex`): kept as + `uv:apex` (pip-installed). The md's `pip` installer type is + authoritative and the user did not call this one out. +- 12 git-ish installers that already matched the v12 reference + (`anythingllm`, `dify`, `heretic`, `homelab`, `invokeai`, + `koboldcpp`, `librechat`, `mcp_drift_state_tracker`, `openjarvis`, + `paperlessngx`, `synapscli`, `wayland_ai`) — no change needed. +- 3 registry-only git tools with real-looking URLs already in place + (`goose` → `block/goose`, `nvidia_agent_skills` → + `NVIDIA/agent-skills`, `picode` → `jasonjmcghee/picode.git`) — no + change needed. + +### Versioning & docs + +- `pyproject.toml`: 3.2.0 → 3.3.0 +- `src/ai_lsc/constants.py`: `APP_VERSION` 3.2.0 → 3.3.0 + (`APP_CODENAME` unchanged: `"Decalogue"`) +- New file: `docs/REGISTRY-URLS-v3.3.0.md` (per-file old → new URL + table, also serves as a release audit trail). +- `gitcommit` rewritten for v3.3.0. + +### Verification + +- All 94 Python files under `src/` AST-parse cleanly. +- Registry extractor re-imports every patched layer module and + confirms all 52 patches landed + the new ComfyUI entry. Total + registry size: 187 tools (was 186). +- Each old `pkg` URL string was unique within its file and matched + exactly once — no blind global replaces. +- Each script-type pkg-field injection matched exactly one installer + block (Python AST-parses after each injection). +- `install_git` / `install_git_node` hardened: the new logic branches + on `os.path.isdir(.git)`, falls back to re-clone on pull failure, + and uses `import time` for backup-dir timestamps. All confirmed + present in `runtime/installer.py`. +- 0 `nicely-done` placeholder URLs remain in the registry. + +--- + +## v3.2 — 10-Layer Systems Architecture Taxonomy completed + +Finishes the taxonomy re-org that was started (but stalled) on top of +v3.1.1b: the whole codebase now speaks the unified 10-layer taxonomy +from the systems-architecture review (POSIX/Unix philosophy, bare-metal +process hierarchy). The partial migration had already rewritten +`constants.py` (NAV_LAYER_ORDER) and `db_manager.py` (CATEGORY_MAP); this +release completes every remaining surface, repairs the damage the +interim tooling caused, and reconciles the registries. Validator +reports 0 errors on both the 108-tool defaults seed and the 186-tool +merged layer registry; wiring graph validates with 0 errors. + +### New layer ladder (11 → 10) + +``` +L1 Host Platform & Infrastructure L6 Multi-Agent Orchestration Runtimes +L2 Development Runtime & Environment L7 Agentic Software Engineering & Sandboxes +L3 GPU Acceleration & Optimization L8 Decentralized Knowledge & Vector Stores +L4 Local Inference Engines L9 Data Extraction & Pipeline Harvest +L5 Intelligent API Routers & Proxies L10 Human Interface & System Operations +``` + +The 11-layer model's Security and Observability strata dissolve: +security *daemons* (keycloak, vault, fail2ban, edge/proxy daemons) are +host platform infrastructure (L1); scanners/policy/audit tooling +(trivy, clamav, opa) and telemetry (btop, grafana, prometheus, opik) +are system operations (L10). Routing merges into Intelligent API +Routers & Proxies (L5). Vector/graph stores and agent memory move out +of Knowledge Management into L8; document/crawl/transcode pipelines +become L9; IaC and cluster automation land in L10. + +### Registry + +- `registry/defaults.py` rebuilt as the 108-tool 10-layer seed from the + master-target registry: new `level`/`layer`/`role`/`category` plus the + richer descriptions. Operational metadata (real installer pkgs/URLs + and cmds, `post_install`/`update_cmd`/`env_overrides`, launchers with + correct binary names and systemd-for-daemons, dependency edges, + curated flags, SPDX licenses, `filesystem` blocks) is preserved from + the previous registry — the master-target file had systematically + replaced installers with placeholder URLs, dropped script cmds + (validator errors), wiped all dep edges, and renamed binaries + (`rg` → `ripgrep`, systemd → tmux `serve` stubs). curl|sh installer + policy markers are untouched (see whatremains.txt, C-05). +- 11 modular layer files realigned: 185 tools migrated to the 10-layer + taxonomy (107 shared tools take their structural fields from the + master registry; the other 78 classified explicitly — see + `scripts/apply_10layer_taxonomy.py` for the classification table). +- `kanban` reconciled: it existed only in `defaults.py` (the canonical + source is the layer files), so it is now declared in + `layers/user_interfaces.py` as well (L10, Sprints Manager). Merged + registry: 185 → 186 tools. +- `n8n` keeps its explicit L10 placement (visual flow canvas) and moves + to the `Workflow` (Visual Builder) category so the categorisation + cascade agrees with the registry. +- `n8n`/`odysseus` `filesystem` blocks (previously only in the old + defaults) are preserved in `layers/orchestrators.py`. +- The `open_webui`/`openwebui` orphan-flagging gap from the TODO is + confirmed moot: only `openwebui` exists and it is wired. + +### Stack wiring + +- `stack/connections.py`: 92 static `StackWiring(layer=...)` values + migrated to the 10-layer names; the 5 loop-based bulk allocations now + resolve layers dynamically via `_wiring_layer(_tid)` (DEFAULT_REGISTRY + lookup + `_WIRING_LAYER_SUPPLEMENT` for wired tools outside the seed + registry), so the wiring graph can never drift from the taxonomy + again. Section header comments map the old L1–L13 sections to their + new homes. Wiring-vs-registry layer mismatches: 0 across 137 wirings. + +### UI + +- `ui/pages/db_manager.py` **repaired and migrated**: the interim + migration had truncated the file from 1300 to 222 lines (syntax error + at the CATEGORY_MAP tail; the entire DB-manager dialog/table + implementation was lost). Restored in full from the v3.1.1b routing + tarball, then its CATEGORY_MAP was migrated to the 10-layer taxonomy. +- Categorisation cascade extended to 221 categories: the master map + (105) + 43 categories for the classified tools + 73 preserved + categories from the v3.1.1b cascade, translated to the 10-layer + taxonomy with their curated roles. Every category used by the 186 + registry tools is covered; cascade and registry agree on layer for + every tool. +- `ui/pages/db_manager_category_map.py` regenerated to match. +- `registry/validator.py` now enforces level range 1–10. + +### Docs & tooling + +- README layer table + tool counts updated to the 10-layer taxonomy + (186 tools); quickstart's "13-layer architecture" reference fixed. +- Layer-file module docstrings note the 10-layer realignment. +- `scripts/apply_10layer_taxonomy.py` added (the corrected, completed + migration utility — supersedes the root `apply_taxonomy_migration.py`, + whose regexes could not match multi-word layer names and whose + defaults handling was lossy; kept for history). + +### Verification + +`scripts`-style checks all pass: 100 Python files AST-parse; validator +0 errors (defaults + merged + wiring graph); level/layer consistency +holds across defaults, layer files, CATEGORY_MAP, and STACK_WIRINGS; +NAV_LAYER_ORDER matches the taxonomy; guardrails clean; headless +package import + `RegistryManager` first-boot/second-run bootstrap +verified (186 tools seeded to ecosystem.json, structural sync clean). + ## v3.1.1b — taxonomy re-org: Routing restored (11 layers), canonical 24-dir /mnt/AI layout Restores the Routing layer that was lost when the 13-layer model was diff --git a/README.md b/README.md index 055f495..9c9443d 100755 --- a/README.md +++ b/README.md @@ -26,17 +26,17 @@ AI Local Stack Control (AI-LSC) provides a unified interface to discover, config Every tool in the registry is classified within a 10-layer taxonomy, giving you a clear mental model of your entire AI stack. Select tools directly from the sidebar — the sidebar *is* the wizard. | Layer | Tools | Examples | -|-------|-------|---------| -| L1 — Host Platform | 16 | PostgreSQL, MariaDB, Redis, SQLite3, DuckDB, Podman, Docker, Tmux, Git | -| L2 — Development Environment | 33 | Python Environment, Deno, uv, Node.js, CuPy, ripgrep, fd, tree-sitter, SST, Unsloth | -| L3 — GPU Runtimes | 3 | CUDA Toolkit, NVIDIA Apex, tinygrad | -| L4 — Engines | 8 | Ollama, llama.cpp, KoboldCPP, Llamafile, TurboLLM, AirLLM, Locally-Uncensored | -| L5 — Orchestrators | 53 | vLLM, SGLang, LiteLLM Proxy, 9Router Proxy, LangChain, LangFlow, Dify, CrewAI, AutoGen, Letta, OpenCode, Gemini CLI, Qwen Code, goose, Codex, +38 more | -| L6 — Security | 6 | Keycloak, HashiCorp Vault, Trivy, Fail2Ban, ClamAV, Open Policy Agent | -| L7 — Observability | 8 | Btop, Glances, Prometheus, Grafana, Grafana Alloy, Opik, Pulse AI, Latitude | -| L8 — User Interfaces | 17 | Open WebUI, AnythingLLM, LibreChat, Flowise, Jan, InvokeAI, Forge (A1111), ComfyUI, Dashy, Obsidian, +7 more | -| L9 — DevOps | 11 | Terraform, Ansible, Puppet, Pulumi, OpenTofu, AWS CDK, Crossplane, Terragrunt | -| L10 — Knowledge Management | 26 | Zotero, Calibre, Paperless-ngx, Logseq, Joplin, Mem0, ChromaDB, LanceDB, Qdrant, LlamaIndex, +16 more | +|-------|-------|----------| +| L1 — Host Platform & Infrastructure | 21 | PostgreSQL, MariaDB, Redis, DuckDB, Podman, Docker, LXC, Firecracker, libvirt, nginx, Tmux, Keycloak, Vault | +| L2 — Development Runtime & Environment | 34 | Python, uv, Node.js, Deno, Go, Rust, GCC, make, ripgrep, fd, tree-sitter, git, gdb, valgrind | +| L3 — GPU Acceleration & Optimization | 5 | CUDA, CuPy, Apex, Unsloth, tinygrad | +| L4 — Local Inference Engines | 10 | vLLM, SGLang, llama.cpp, KoboldCPP, Llamafile, Ollama, TurboLLM, AirLLM | +| L5 — Intelligent API Routers & Proxies | 4 | LiteLLM Proxy, 9Router Proxy, MeshLLM, Fabric | +| L6 — Multi-Agent Orchestration Runtimes | 22 | Swarm, AutoGen, CrewAI, Agno, LangChain, Letta, OpenBrain, Ray, Glassmind | +| L7 — Agentic Software Engineering & Sandboxes | 17 | OpenHands, Aider, Claude Code, Codex, Gemini CLI, OpenCode, goose, spec-kit | +| L8 — Decentralized Knowledge & Vector Stores | 11 | ChromaDB, LanceDB, Qdrant, Neo4j, Elasticsearch, Meilisearch, Mem0, TurboVec | +| L9 — Data Extraction & Pipeline Harvest | 12 | Crawl4AI, Docling, MarkItDown, Whisper, Parakeet, Airweave, OpenDataloader | +| L10 — Human Interface & System Operations | 50 | Open WebUI, AnythingLLM, LibreChat, Flowise, n8n, Dify, Grafana, Prometheus, Terraform, Ansible | ![Infrastructure Layers](docs/screenshots/infrastructure-layers.png) @@ -147,7 +147,7 @@ ai_lsc/ validator.py # Schema validation (8-key flags enforced) license_gate.py # License compliance gating licenses.py # License database - layers/ # 10 per-layer tool files + layers/ # 11 per-layer tool files (10-layer taxonomy) host_platform.py # L1: 9 tools development.py # L2: 7 tools gpu.py # L3: 3 tools diff --git a/TODO.md b/TODO.md index 3c8b68a..2cd4be4 100755 --- a/TODO.md +++ b/TODO.md @@ -1,5 +1,13 @@ # AI-LSC TODO +## Recent progress (v3.2 — 10-Layer Systems Architecture) + +- ✅ Completed the 10-layer taxonomy migration that was started on top of v3.1.1b: `defaults.py` (108-tool seed), all 11 modular layer files (186 tools), `stack/connections.py` (92 static layers + 5 dynamic loop lookups), CATEGORY_MAP cascade (221 categories), validator level range, README/quickstart/docs. See [CHANGES.md](CHANGES.md) → v3.2. +- ✅ Repaired `ui/pages/db_manager.py`: the interim migration had truncated it to 222 lines (syntax error + lost implementation); restored in full from the v3.1.1b routing tarball and migrated its CATEGORY_MAP. +- ✅ Reconciled `kanban` into the layer files (was defaults-only) — merged registry is now 186 tools. +- ✅ Preserved all operational registry metadata (installers, launchers, deps, flags, licenses, filesystem blocks) that the master-target defaults rewrite had stripped; curl|sh policy markers untouched (C-05). +- ✅ `open_webui` vs `openwebui` orphan gap: confirmed moot — only `openwebui` exists in the registry and it has a STACK_WIRINGS entry. + ## Recent progress (v3.1 — 2026-07-07) - ✅ Applied the full master code critique: 91 of 93 findings addressed (CRITICAL × 6, HIGH × 24, MEDIUM × 42, LOW × 19). The 2 intentionally skipped items (curl|sh remote installers) are documented in [whatremains.txt](whatremains.txt). @@ -10,11 +18,26 @@ ## Open work -The 13 layers are likely to stay but the way they're described and labeled may change in the next release. The agentic abilities for classification of software tools are still limited — I have little time to code lately; this was a tool to make my life easier when testing software out. If you're reading this file, first of all thanks for trying it out — help by testing the UI, tools, configs, and pipelines. It's a lot. +The 10-layer taxonomy is now in place; classification quality is the next +frontier. The 78 layer-file tools absent from the master registry were +classified by hand for v3.2 (table in +`scripts/apply_10layer_taxonomy.py`); review those assignments if any +feel wrong — `layer`/`level` sync from layer files makes corrections a +one-file edit. If you're reading this file, first of all thanks for +trying it out — help by testing the UI, tools, configs, and pipelines. +It's a lot. -### Known registry inconsistencies to reconcile +### Follow-ups worth doing -- `open_webui` (with underscore) vs `openwebui` (no underscore) — the Pipeline Ticker surfaces this gap when both are staged: `open_webui` is flagged orphan because it has no `STACK_WIRINGS` entry, while `openwebui` does. Recommend a follow-up pass to either rename one tool_id or merge the wirings. +- Regroup the 11 legacy layer files (still named after the old taxonomy: + `security.py`, `observability.py`, `devops.py`, ...) into 10 files that + match the new layer names. The loader merges by tool, not by filename, + so this is pure file-shuffling — deferred as churn in v3.2. +- `llama-swap` and `mesh-llm` are listed as Layer 5 exemplars in the + architecture docs but only `meshllm` exists in the registry; consider + adding a `llama_swap` entry (VRAM swapper) to complete the story. +- The 74 preserved-but-unused cascade categories (from the v3.1.1b map) + could be pruned if the category combobox feels crowded. ### Deferred from the critique pass @@ -22,12 +45,12 @@ See [whatremains.txt](whatremains.txt) for the full list. Highlights: - `curl|sh` remote installers (Ollama, Grafana Alloy, Meilisearch) — left in place per user instruction. Apply the critique's download-first pattern when the remote-code-execution policy is revisited. - L-17: `registry/openengineer/parser.py` still has commented-out code blocks — confirm with the OE importer maintainer before deleting. -- L-18: registry layer files declare tools without `filesystem` blocks; backfilling `install/config/cache/logs` paths across all 123 layer-file tools is a mechanical but sizable job. +- L-18: registry layer files declare tools without `filesystem` blocks; backfilling `install/config/cache/logs` paths across the layer-file tools is a mechanical but sizable job (v3.2 preserved the 24 defaults.py blocks + n8n/odysseus). - M-22 / M-40: `chatbot_console.py` HTML bubble builder + nested ternary — could extract `_render_bubble(msg)` helper, deferred as low-impact polish. - M-10 / M-15 / M-16: `registry/openengineer/importer.py` nested-if flattening + dedup — defer to a focused OE-importer cleanup pass. ### UX polish still on the wishlist - The Monitor page flow is 80% organized; the layout is still being decided. -- More `STACK_WIRINGS` entries — the ticker's value scales with how complete the wiring data is. Currently 60 wirings for 124 tools; gaps surface as orphans when staged. -- Screenshots: the `docs/screenshots/` directory still reflects v3.0. A refresh pass to capture the new Pipeline Ticker + Workspace Tab is overdue. +- More `STACK_WIRINGS` entries — the ticker's value scales with how complete the wiring data is. Currently 137 wirings for 186 tools; gaps surface as orphans when staged. +- Screenshots: the `docs/screenshots/` directory still reflects v3.0. A refresh pass to capture the 10-layer sidebar + Pipeline Ticker + Workspace Tab is overdue. diff --git a/apply_taxonomy_migration.py b/apply_taxonomy_migration.py new file mode 100755 index 0000000..6dd36da --- /dev/null +++ b/apply_taxonomy_migration.py @@ -0,0 +1,300 @@ +#!/usr/bin/env python3 +""" +DCOS.net AI-LSC Codebase Reorganization & 10-Layer Migration Utility +Author: Jeremy Anderson +Domain: dcos.net +Contact: info@dcos.net +License: CC-BY-SA 4.0 International + +This script programmatically upgrades the entire ai_lsc codebase to be +10-layer compliant. It reorganizes layer order, updates the category map, +and ensures that all stack wiring loops dynamically look up layer metadata. +""" + +import os +import re +from pathlib import Path + +# ── 1. Reorganized 10-Layer Taxonomy ─────────────────────────────────────── +NEW_LAYERS = [ + "Host Platform & Infrastructure", + "Development Runtime & Environment", + "GPU Acceleration & Optimization", + "Local Inference Engines", + "Intelligent API Routers & Proxies", + "Multi-Agent Orchestration Runtimes", + "Agentic Software Engineering & Sandboxes", + "Decentralized Knowledge & Vector Stores", + "Data Extraction & Pipeline Harvest", + "Human Interface & System Operations" +] + +# ── 2. Reorganized CATEGORY_MAP ───────────────────────────────────────────── +NEW_CATEGORY_MAP = { + "Agent Daemon": {"layer": "Multi-Agent Orchestration Runtimes", "level": 6, "role": "Agent Daemon"}, + "Agent Shell": {"layer": "Multi-Agent Orchestration Runtimes", "level": 6, "role": "Agent Shell"}, + "Agentless Deployment": {"layer": "Human Interface & System Operations", "level": 10, "role": "Agentless Deployment"}, + "Alloy Telemetry": {"layer": "Human Interface & System Operations", "level": 10, "role": "Alloy Telemetry"}, + "Analytical Database": {"layer": "Host Platform & Infrastructure", "level": 1, "role": "Analytical Database"}, + "Audio Extraction": {"layer": "Data Extraction & Pipeline Harvest", "level": 9, "role": "Audio Extraction"}, + "Auto Recovery Daemon": {"layer": "Human Interface & System Operations", "level": 10, "role": "Auto Recovery Daemon"}, + "CI/CD Orchestration": {"layer": "Agentic Software Engineering & Sandboxes", "level": 7, "role": "CI/CD Orchestration"}, + "CLI Pair Programmer": {"layer": "Agentic Software Engineering & Sandboxes", "level": 7, "role": "CLI Pair Programmer"}, + "Cache": {"layer": "Host Platform & Infrastructure", "level": 1, "role": "Cache"}, + "Cloud Dev Kit": {"layer": "Human Interface & System Operations", "level": 10, "role": "Cloud Dev Kit"}, + "Cluster Homepage": {"layer": "Human Interface & System Operations", "level": 10, "role": "Cluster Homepage"}, + "Code Refactoring": {"layer": "Agentic Software Engineering & Sandboxes", "level": 7, "role": "Code Refactoring"}, + "Codex Developer": {"layer": "Agentic Software Engineering & Sandboxes", "level": 7, "role": "Codex Developer"}, + "Collaborative Chat": {"layer": "Human Interface & System Operations", "level": 10, "role": "Collaborative Chat"}, + "Context Integrity Core": {"layer": "Agentic Software Engineering & Sandboxes", "level": 7, "role": "Context Integrity Core"}, + "Coordination Protocol": {"layer": "Multi-Agent Orchestration Runtimes", "level": 6, "role": "Coordination Protocol"}, + "Curation Pipeline": {"layer": "Intelligent API Routers & Proxies", "level": 5, "role": "Curation Pipeline"}, + "Data Ingest": {"layer": "Data Extraction & Pipeline Harvest", "level": 9, "role": "Data Ingest"}, + "Database": {"layer": "Host Platform & Infrastructure", "level": 1, "role": "Database"}, + "Datacenter Inference": {"layer": "Local Inference Engines", "level": 4, "role": "Datacenter Inference"}, + "Desktop Agent Core": {"layer": "Multi-Agent Orchestration Runtimes", "level": 6, "role": "Desktop Agent Core"}, + "Desktop GUI": {"layer": "Human Interface & System Operations", "level": 10, "role": "Desktop GUI"}, + "Distributed Search": {"layer": "Decentralized Knowledge & Vector Stores", "level": 8, "role": "Distributed Search"}, + "Document Archiver": {"layer": "Human Interface & System Operations", "level": 10, "role": "Document Archiver"}, + "Document Comprehension": {"layer": "Data Extraction & Pipeline Harvest", "level": 9, "role": "Document Comprehension"}, + "Document Parser": {"layer": "Data Extraction & Pipeline Harvest", "level": 9, "role": "Document Parser"}, + "ETL Transformation": {"layer": "Data Extraction & Pipeline Harvest", "level": 9, "role": "ETL Transformation"}, + "Ecosystem Launcher": {"layer": "Human Interface & System Operations", "level": 10, "role": "Ecosystem Launcher"}, + "Enterprise Assistant": {"layer": "Human Interface & System Operations", "level": 10, "role": "Enterprise Assistant"}, + "Extensible Interface": {"layer": "Human Interface & System Operations", "level": 10, "role": "Extensible Interface"}, + "File Discovery": {"layer": "Development Runtime & Environment", "level": 2, "role": "File Discovery"}, + "GGUF Runtime": {"layer": "Local Inference Engines", "level": 4, "role": "GGUF Runtime"}, + "GPU Computing": {"layer": "GPU Acceleration & Optimization", "level": 3, "role": "GPU Computing"}, + "Gap Analyzer": {"layer": "Human Interface & System Operations", "level": 10, "role": "Gap Analyzer"}, + "Graph Database": {"layer": "Decentralized Knowledge & Vector Stores", "level": 8, "role": "Graph Database"}, + "Hardware Acceleration": {"layer": "GPU Acceleration & Optimization", "level": 3, "role": "Hardware Acceleration"}, + "High-Performance Vector": {"layer": "Decentralized Knowledge & Vector Stores", "level": 8, "role": "High-Performance Vector"}, + "IaC DRY Wrapper": {"layer": "Human Interface & System Operations", "level": 10, "role": "IaC DRY Wrapper"}, + "Image WebUI": {"layer": "Human Interface & System Operations", "level": 10, "role": "Image WebUI"}, + "Infrastructure Provision": {"layer": "Human Interface & System Operations", "level": 10, "role": "Infrastructure Provision"}, + "Infrastructure as Code": {"layer": "Development Runtime & Environment", "level": 2, "role": "Infrastructure as Code"}, + "Integration Library": {"layer": "Multi-Agent Orchestration Runtimes", "level": 6, "role": "Integration Library"}, + "Isolation": {"layer": "Host Platform & Infrastructure", "level": 1, "role": "Isolation"}, + "LLM Observability": {"layer": "Human Interface & System Operations", "level": 10, "role": "LLM Observability"}, + "Layer-wise Inference": {"layer": "Local Inference Engines", "level": 4, "role": "Layer-wise Inference"}, + "Learning Cards": {"layer": "Human Interface & System Operations", "level": 10, "role": "Learning Cards"}, + "Lexical Search": {"layer": "Decentralized Knowledge & Vector Stores", "level": 8, "role": "Lexical Search"}, + "Library Manager": {"layer": "Human Interface & System Operations", "level": 10, "role": "Library Manager"}, + "Load Balancer": {"layer": "Intelligent API Routers & Proxies", "level": 5, "role": "Load Balancer"}, + "Local Central Shell": {"layer": "Human Interface & System Operations", "level": 10, "role": "Local Central Shell"}, + "Local Declarative DSL": {"layer": "Human Interface & System Operations", "level": 10, "role": "Local Declarative DSL"}, + "Local LLM Runner": {"layer": "Local Inference Engines", "level": 4, "role": "Local LLM Runner"}, + "Markdown Converter": {"layer": "Data Extraction & Pipeline Harvest", "level": 9, "role": "Markdown Converter"}, + "Metal Provisioner": {"layer": "Human Interface & System Operations", "level": 10, "role": "Metal Provisioner"}, + "Metric Scraper": {"layer": "Human Interface & System Operations", "level": 10, "role": "Metric Scraper"}, + "Mixed Precision": {"layer": "GPU Acceleration & Optimization", "level": 3, "role": "Mixed Precision"}, + "Model Curation": {"layer": "Local Inference Engines", "level": 4, "role": "Model Curation"}, + "Model Manager GUI": {"layer": "Human Interface & System Operations", "level": 10, "role": "Model Manager GUI"}, + "Model Optimization": {"layer": "GPU Acceleration & Optimization", "level": 3, "role": "Model Optimization"}, + "Model Surgery": {"layer": "Local Inference Engines", "level": 4, "role": "Model Surgery"}, + "Multi-Agent Framework": {"layer": "Multi-Agent Orchestration Runtimes", "level": 6, "role": "Multi-Agent Framework"}, + "Native Inference": {"layer": "Local Inference Engines", "level": 4, "role": "Native Inference"}, + "Offline Journal": {"layer": "Human Interface & System Operations", "level": 10, "role": "Offline Journal"}, + "Open-Source IaC": {"layer": "Human Interface & System Operations", "level": 10, "role": "Open-Source IaC"}, + "Outliner Graph": {"layer": "Human Interface & System Operations", "level": 10, "role": "Outliner Graph"}, + "Output Evaluator": {"layer": "Human Interface & System Operations", "level": 10, "role": "Output Evaluator"}, + "PDF Processing": {"layer": "Data Extraction & Pipeline Harvest", "level": 9, "role": "PDF Processing"}, + "Parsing Engine": {"layer": "Development Runtime & Environment", "level": 2, "role": "Parsing Engine"}, + "Performance Engine": {"layer": "Local Inference Engines", "level": 4, "role": "Performance Engine"}, + "Platform Workspace": {"layer": "Human Interface & System Operations", "level": 10, "role": "Platform Workspace"}, + "Production Multi-Agent": {"layer": "Multi-Agent Orchestration Runtimes", "level": 6, "role": "Production Multi-Agent"}, + "Programmable IaC": {"layer": "Human Interface & System Operations", "level": 10, "role": "Programmable IaC"}, + "Prompt Tester": {"layer": "Agentic Software Engineering & Sandboxes", "level": 7, "role": "Prompt Tester"}, + "RAG Flow Canvas": {"layer": "Human Interface & System Operations", "level": 10, "role": "RAG Flow Canvas"}, + "Reference Manager": {"layer": "Human Interface & System Operations", "level": 10, "role": "Reference Manager"}, + "Requirement Builder": {"layer": "Agentic Software Engineering & Sandboxes", "level": 7, "role": "Requirement Builder"}, + "Role-Playing Agent": {"layer": "Multi-Agent Orchestration Runtimes", "level": 6, "role": "Role-Playing Agent"}, + "Runtime Environment": {"layer": "Development Runtime & Environment", "level": 2, "role": "Runtime Environment"}, + "Runtime Packaging": {"layer": "Host Platform & Infrastructure", "level": 1, "role": "Runtime Packaging"}, + "Serverless Database": {"layer": "Decentralized Knowledge & Vector Stores", "level": 8, "role": "Serverless Database"}, + "Single-File Runtime": {"layer": "Local Inference Engines", "level": 4, "role": "Single-File Runtime"}, + "Skill Auditor": {"layer": "Agentic Software Engineering & Sandboxes", "level": 7, "role": "Skill Auditor"}, + "Sovereign Graph Editor": {"layer": "Human Interface & System Operations", "level": 10, "role": "Sovereign Graph Editor"}, + "Sovereign Software Agent": {"layer": "Agentic Software Engineering & Sandboxes", "level": 7, "role": "Sovereign Software Agent"}, + "Speech Transcriber": {"layer": "Data Extraction & Pipeline Harvest", "level": 9, "role": "Speech Transcriber"}, + "Sprint Planner": {"layer": "Human Interface & System Operations", "level": 10, "role": "Sprint Planner"}, + "Sprints Manager": {"layer": "Human Interface & System Operations", "level": 10, "role": "Sprints Manager"}, + "Stateless Orchestration": {"layer": "Multi-Agent Orchestration Runtimes", "level": 6, "role": "Stateless Orchestration"}, + "Structured Synthesis": {"layer": "Decentralized Knowledge & Vector Stores", "level": 8, "role": "Structured Synthesis"}, + "Studio Canvas": {"layer": "Human Interface & System Operations", "level": 10, "role": "Studio Canvas"}, + "Synchronization Layer": {"layer": "Data Extraction & Pipeline Harvest", "level": 9, "role": "Synchronization Layer"}, + "System Auditor": {"layer": "Human Interface & System Operations", "level": 10, "role": "System Auditor"}, + "System Console": {"layer": "Human Interface & System Operations", "level": 10, "role": "System Console"}, + "Telemetry Monitor": {"layer": "Human Interface & System Operations", "level": 10, "role": "Telemetry Monitor"}, + "Telemetry Visualizer": {"layer": "Human Interface & System Operations", "level": 10, "role": "Telemetry Visualizer"}, + "Terminal Agent": {"layer": "Multi-Agent Orchestration Runtimes", "level": 6, "role": "Terminal Agent"}, + "Terminal Coding Agent": {"layer": "Agentic Software Engineering & Sandboxes", "level": 7, "role": "Terminal Coding Agent"}, + "Text Search": {"layer": "Development Runtime & Environment", "level": 2, "role": "Text Search"}, + "Unified API Gateway": {"layer": "Intelligent API Routers & Proxies", "level": 5, "role": "Unified API Gateway"}, + "Vector Engine": {"layer": "Decentralized Knowledge & Vector Stores", "level": 8, "role": "Vector Engine"}, + "Vision describer": {"layer": "Data Extraction & Pipeline Harvest", "level": 9, "role": "Vision describer"}, + "Visual Agent Canvas": {"layer": "Human Interface & System Operations", "level": 10, "role": "Visual Agent Canvas"}, + "Voice Synthesis": {"layer": "Data Extraction & Pipeline Harvest", "level": 9, "role": "Voice Synthesis"}, + "Web Scraper": {"layer": "Data Extraction & Pipeline Harvest", "level": 9, "role": "Web Scraper"}, +} + +def migrate_constants(path: Path): + if not path.exists(): + print(f"[-] constants.py not found at {path}") + return + content = path.read_text(encoding="utf-8") + + # Locate NAV_LAYER_ORDER array + nav_pattern = re.compile(r'NAV_LAYER_ORDER:\s*list\[str\]\s*=\s*\[[^\]]+\]', re.DOTALL) + new_nav_str = "NAV_LAYER_ORDER: list[str] = [\n" + "".join(f' "{l}",\n' for l in NEW_LAYERS) + "]" + + if nav_pattern.search(content): + content = nav_pattern.sub(new_nav_str, content) + path.write_text(content, encoding="utf-8") + print(f"[+] Migrated constants.py layers!") + else: + print(f"[-] NAV_LAYER_ORDER block not matched in constants.py") + +def migrate_db_manager(path: Path): + if not path.exists(): + print(f"[-] db_manager.py not found at {path}") + return + content = path.read_text(encoding="utf-8") + + # Locate CATEGORY_MAP dict block + map_pattern = re.compile(r'CATEGORY_MAP:\s*dict\[str,\s*dict\[str,\s*object\]\]\s*=\s*\{[^}]+(\}[^}]*)*\}', re.DOTALL) + + # Format CATEGORY_MAP dict + new_map_str = "CATEGORY_MAP: dict[str, dict[str, object]] = {\n" + for cat in sorted(NEW_CATEGORY_MAP.keys()): + val = NEW_CATEGORY_MAP[cat] + new_map_str += f' "{cat}": ' + "{" + f'"layer": "{val["layer"]}", "level": {val["level"]}, "role": "{val["role"]}"' + "},\n" + new_map_str += "}" + + if map_pattern.search(content): + content = map_pattern.sub(new_map_str, content) + path.write_text(content, encoding="utf-8") + print(f"[+] Migrated db_manager.py CATEGORY_MAP!") + else: + print(f"[-] CATEGORY_MAP block not matched in db_manager.py") + +def migrate_connections(path: Path, defaults_path: Path): + if not path.exists(): + print(f"[-] connections.py not found at {path}") + return + if not defaults_path.exists(): + print(f"[-] defaults.py not found at {defaults_path} - cannot resolve dynamic tool layers") + return + + # Dynamically read tool_id -> layer from defaults.py + sys.path.insert(0, str(defaults_path.parent)) + import defaults + tool_to_layer = {} + for tid, tool in defaults.DEFAULT_REGISTRY.items(): + tool_to_layer[tid] = tool["layer"] + + content = path.read_text(encoding="utf-8") + + # Add DEFAULT_REGISTRY import to connections.py if missing + import_line = "from ai_lsc.registry.defaults import DEFAULT_REGISTRY" + if "import DEFAULT_REGISTRY" not in content and import_line not in content: + # Insert after absolute imports + content = "from ai_lsc.registry.defaults import DEFAULT_REGISTRY\n" + content + print("[+] Added DEFAULT_REGISTRY import to connections.py") + + # Reorganize the StackWiring layer arguments in connections.py + blocks = content.split("_reg(StackWiring(") + new_blocks = [blocks[0]] + updated_count = 0 + + for block in blocks[1:]: + tid_match = re.search(r"""tool_id\s*=\s*["']?([a-zA-Z0-9_-]+)["']?""", block) + if tid_match: + tid = tid_match.group(1) + if tid in tool_to_layer: + new_layer = tool_to_layer[tid] + # Replace layer="..." or layer='...' + block, count = re.subn(r"""layer\s*=\s*["|'][^"'\s]+["|']""", f'layer="{new_layer}"', block) + if count: + updated_count += 1 + new_blocks.append(block) + + content = "_reg(StackWiring(".join(new_blocks) + + # Convert hardcoded loops to look up the layer from the registry dynamically + # Example: layer="DevOps" inside loops -> layer=DEFAULT_REGISTRY[_tid]["layer"] + content, loops_updated = re.subn( + r"""layer\s*=\s*["'](?:DevOps|User Interfaces|Knowledge Management|Orchestrators|Host Platform|Development Environment|GPU Runtimes|Engines|Routing|Security|Observability)["']""", + 'layer=DEFAULT_REGISTRY[_tid]["layer"]', + content + ) + if loops_updated: + print(f"[+] Converted {loops_updated} loop-based StackWiring layers to dynamic lookups!") + + path.write_text(content, encoding="utf-8") + print(f"[+] Migrated connections.py! Rebuilt {updated_count} static tool-layer definitions.") + +def migrate_layers(layers_dir: Path, defaults_path: Path): + if not layers_dir.is_dir(): + print(f"[-] Layers directory not found at {layers_dir}") + return + if not defaults_path.exists(): + print(f"[-] defaults.py not found - cannot update layer files") + return + + import defaults + tool_to_layer = {} + tool_to_level = {} + for tid, tool in defaults.DEFAULT_REGISTRY.items(): + tool_to_layer[tid] = tool["layer"] + tool_to_level[tid] = tool["level"] + + updated_files = 0 + for path in layers_dir.glob("*.py"): + if path.name == "__init__.py": + continue + original = path.read_text(encoding="utf-8") + content = original + + # Replace level and layer for each tool inside the file + for tid in tool_to_layer: + # Look for block: 'tool_id': { or "tool_id": { + # we do a specific match and replace within that dict + tool_pattern = re.compile(rf"""["']{tid}["']\s*:\s*\{{[^}}]+}}""", re.DOTALL) + match = tool_pattern.search(content) + if match: + block = match.group(0) + # Replace level + block = re.sub(r'"level":\s*\d+', f'"level": {tool_to_level[tid]}', block) + # Replace layer + block = re.sub(r""""layer":\s*["|'][^"'\s]+["|']""", f'"layer": "{tool_to_layer[tid]}"', block) + content = content.replace(match.group(0), block) + + if content != original: + path.write_text(content, encoding="utf-8") + print(f"[+] Realigned tool layers & levels inside modular layer file: {path.name}") + updated_files += 1 + + print(f"[+] Layer files update complete. Modified {updated_files} layer modules.") + +def main(): + import sys + root = Path(__file__).resolve().parent + src_dir = root / "src" + + # Setup paths relative to root or src + constants_path = src_dir / "ai_lsc" / "constants.py" + db_manager_path = src_dir / "ai_lsc" / "ui" / "pages" / "db_manager.py" + connections_path = src_dir / "ai_lsc" / "stack" / "connections.py" + defaults_path = src_dir / "ai_lsc" / "registry" / "defaults.py" + layers_dir = src_dir / "ai_lsc" / "registry" / "layers" + + print("[*] Starting taxonomy migration sweeps...") + migrate_constants(constants_path) + migrate_db_manager(db_manager_path) + migrate_connections(connections_path, defaults_path) + migrate_layers(layers_dir, defaults_path) + print("[+] Entire codebase has been successfully upgraded to the 10-Layer Architecture!") + +if __name__ == "__main__": + main() diff --git a/docs/REGISTRY-URLS-v3.3.0.md b/docs/REGISTRY-URLS-v3.3.0.md new file mode 100644 index 0000000..6b23a9f --- /dev/null +++ b/docs/REGISTRY-URLS-v3.3.0.md @@ -0,0 +1,164 @@ +# Registry installer-URL sync — v3.3.0 + +Source reference: `ai-stack-guide-v12.md` (systems-architect guide). +Patched files: `src/ai_lsc/registry/layers/*.py`. +Total installer URL corrections: **51** across 8 layer files. + +Five categories of patches: +- **A** (28): git / git_node / custom installer `pkg` URL corrected to match the v12 markdown reference. +- **B** (6): script-type installer gets a new `pkg` field added (the github repo), while the existing working `cmd` is left untouched. +- **C** (10): registry-only git tools with no v12 markdown entry — official upstream repos found via web search. +- **D** (3): type-mismatch fixes — md says git / git_node, registry had `uv` with a package name. Switched to git / git_node with the github URL from the v12 markdown reference. +- **E** (4): user-provided URLs for the 4 previously-unresolved registry-only tools (web search could not find these; the user provided the official upstream URLs directly). + +Plus 1 new tool entry (ComfyUI) and a runtime hardening of `install_git` / `install_git_node` in `runtime/installer.py`. + +## `devops.py` (3 A/B/C patches) + +| Tool ID | Cat | Old `pkg` | New `pkg` | +|---|---|---|---| +| `opentofu` | A | `https://opentofu.org/docs/intro/install/` | `https://github.com/opentofu/opentofu` | +| `terragrunt` | A | `https://terragrunt.gruntwork.io/docs/getting-started/install/` | `https://github.com/gruntwork-io/terragrunt` | +| `crossplane` | C | `https://docs.crossplane.io/v2/getting-started/install/` | `https://github.com/crossplane/crossplane` | + +## `inference.py` (6 A/B/C patches) + +| Tool ID | Cat | Old `pkg` | New `pkg` | +|---|---|---|---| +| `airllm` | A | `https://github.com/liguodongiot/llm-airforce` | `https://github.com/lyogavin/airllm` | +| `llamacpp` | A | `https://github.com/ggerganov/llama.cpp` | `https://github.com/ggml-org/llama.cpp` | +| `locally_uncensored` | A | `https://github.com/nicely-done/locally-uncensored` | `https://github.com/PurpleDoubleD/locally-uncensored` | +| `turbollm` | A | `https://github.com/nicely-done/turbollm` | `https://github.com/mohitsoni48/TurboLLM` | +| `llamafile` | B | `(none)` | `https://github.com/Mozilla-Ocho/llamafile` | +| `ollama` | B | `(none)` | `https://github.com/ollama/ollama` | + +## `knowledge_management.py` (10 A/B/C patches) + +| Tool ID | Cat | Old `pkg` | New `pkg` | +|---|---|---|---| +| `airweave` | A | `https://github.com/nicely-done/airweave` | `https://github.com/airweave-ai/airweave` | +| `mirofish` | A | `https://github.com/nicely-done/mirofish` | `https://github.com/666ghj/MiroFish` | +| `opendataloader` | A | `https://github.com/nicely-done/opendataloader` | `https://github.com/opendataloader-project/opendataloader-pdf` | +| `opendataloader_pdf` | A | `https://github.com/nicely-done/opendataloader-pdf` | `https://github.com/opendataloader-project/opendataloader-pdf` | +| `understand_anything` | A | `https://github.com/nicely-done/understand-anything` | `https://github.com/Egonex-AI/Understand-Anything` | +| `meilisearch` | B | `(none)` | `https://github.com/meilisearch/meilisearch` | +| `qdrant` | B | `(none)` | `https://github.com/qdrant/qdrant` | +| `everos_memory` | C | `https://github.com/nicely-done/everos-memory` | `https://github.com/EverMind-AI/EverOS` | +| `mnemo_cortex` | C | `https://github.com/nicely-done/mnemo-cortex` | `https://github.com/GuyMannDude/mnemo-cortex` | +| `turbovec` | C | `https://github.com/nicely-done/turbovec` | `https://github.com/ryancodrai/turbovec` | + +## `observability.py` (4 A/B/C patches) + +| Tool ID | Cat | Old `pkg` | New `pkg` | +|---|---|---|---| +| `latitude` | A | `https://github.com/nicely-done/latitude` | `https://github.com/latitude-dev/latitude-llm` | +| `pulse_ai` | A | `https://github.com/nicely-done/pulse-ai` | `https://github.com/glieai/pulse-ai` | +| `grafana_alloy` | B | `(none)` | `https://github.com/grafana/alloy` | +| `dma` | C | `https://github.com/distcc/dma` | `https://github.com/distcc/distcc` | + +## `orchestrators.py` (15 A/B/C patches) + +| Tool ID | Cat | Old `pkg` | New `pkg` | +|---|---|---|---| +| `agentic_os` | A | `https://github.com/nicely-done/agentic-os` | `https://github.com/aporb/agentic-os` | +| `career_ops` | A | `https://github.com/nicely-done/career_ops` | `https://github.com/santifer/career-ops` | +| `container_tool` | A | `https://github.com/nicely-done/container_tool` | `https://github.com/NVIDIA/nvidia-container-toolkit` | +| `hivemind` | A | `https://github.com/nicely-done/hivemind` | `https://github.com/hivementality-ai/hivemind` | +| `loop_engineering` | A | `https://github.com/nicely-done/loop_engineering` | `https://github.com/lcajigasm/loop-engineering` | +| `opensandbox` | A | `https://github.com/nicely-done/opensandbox` | `https://github.com/opensandbox-group/OpenSandbox` | +| `ponytail` | A | `https://github.com/nicely-done/ponytail` | `https://github.com/DietrichGebert/ponytail` | +| `promptops` | A | `https://github.com/nicely-done/promptops` | `https://github.com/llmhq-hub/promptops` | +| `skillspector` | A | `https://github.com/nicely-done/skillspector` | `https://github.com/NVIDIA/skillspector` | +| `spec_kit` | A | `https://github.com/nicely-done/spec_kit` | `https://github.com/github/spec-kit` | +| `fabric` | B | `(none)` | `https://github.com/danielmiessler/fabric` | +| `agent_reach` | C | `https://github.com/nicely-done/agent_reach` | `https://github.com/Panniantong/Agent-Reach` | +| `headroom` | C | `https://github.com/nicely-done/headroom` | `https://github.com/headroomlabs-ai/headroom` | +| `nightshift` | C | `https://github.com/nicely-done/nightshift` | `https://github.com/johndaskovsky/nightshift` | +| `openbrain` | C | `https://github.com/nicely-done/openbrain` | `https://github.com/NateBJones-Projects/OB1` | + +## `routing.py` (1 A/B/C patches) + +| Tool ID | Cat | Old `pkg` | New `pkg` | +|---|---|---|---| +| `9router_proxy` | A | `https://github.com/nicely-done/9router` | `https://github.com/decolua/9router` | + +## `security.py` (1 A/B/C patches) + +| Tool ID | Cat | Old `pkg` | New `pkg` | +|---|---|---|---| +| `keycloak` | C | `keycloak` | `https://github.com/keycloak/keycloak` | + +## `user_interfaces.py` (4 A/B/C patches) + +| Tool ID | Cat | Old `pkg` | New `pkg` | +|---|---|---|---| +| `deep_eye` | A | `https://github.com/nicely-done/deep-eye` | `https://github.com/zakirkun/deep-eye` | +| `forge` | A | `https://github.com/AUTOMATIC1111/stable-diffusion-webui-forge` | `https://github.com/lllyasviel/stable-diffusion-webui-forge` | +| `local_llm_launcher` | A | `https://github.com/nicely-done/local-llm-launcher-gui` | `https://github.com/jimdawdy-hub/Local-LLM-Launcher-GUI` | +| `parakeet` | A | `https://github.com/nicely-done/parakeet.cpp` | `https://github.com/mudler/parakeet.cpp` | + +## Category D — type-mismatch fixes (3 patches) + +These tools were registered as `uv` package-manager installs but the v12 markdown reference (which the user manually tested) lists them as `git` or `git_node`. Switched to git / git_node type with the github URL. + +| Tool ID | Source file | Old type / pkg | New type / pkg | +|---|---|---|---| +| `pm_skills` | `orchestrators.py` | `uv` / (package name) | `git` / `https://github.com/product-on-purpose/pm-skills` | +| `agno` | `orchestrators.py` | `uv` / (package name) | `git` / `https://github.com/agno-agi/agno` | +| `openhands` | `devops.py` | `uv` / (package name) | `git_node` / `https://github.com/All-Hands-AI/OpenHands.git` | + +## Category E — user-provided URLs (4 patches) + +These 4 registry-only tools had placeholder `github.com/nicely-done/...` URLs because web search could not find their official upstreams. The user provided the official URLs directly: + +| Tool ID | Source file | Old `pkg` (placeholder) | New `pkg` (user-provided) | +|---|---|---|---| +| `algory` | `orchestrators.py` | `https://github.com/nicely-done/algory` | `https://github.com/aryaghan-mutum/algory` | +| `atlas_os` | `orchestrators.py` | `https://github.com/nicely-done/atlas_os` | `https://github.com/atlas-os/atlas` | +| `eagle_eye` | `observability.py` | `https://github.com/nicely-done/eagle_eye` | `https://github.com/thoughtfuldev/eagleeye` | +| `glassmind` | `orchestrators.py` | `https://github.com/nicely-done/glassmind` | `https://github.com/khodges42/glassMind` | + +## New tool entry — ComfyUI + +ComfyUI was referenced in `registry/stack_templates/ai-image-gen-local.json` but had no registry entry before. Added as a Level 10 tool in `user_interfaces.py`: + +| Field | Value | +|---|---| +| `tool_id` | `comfyui` | +| `name` | `ComfyUI` | +| `level` | 10 | +| `layer` | `Human Interface & System Operations` | +| `role` / `category` | `Node-Based Image Gen` | +| `installer.type` | `git` | +| `installer.pkg` | `https://github.com/comfy-org/comfyui` | +| `launcher.cmd` | `cd {tools_root}/comfyui && python main.py --listen 0.0.0.0 --port {port}` | +| `launcher.default_port` | `8188` | +| `deps` | `[cuda]` | +| `license` | `GPL-3.0` | + +Total registry size: 187 tools (was 186). + +## Runtime hardening — `runtime/installer.py` + +`install_git` and `install_git_node` were hardened so that re-running install on an already-cloned tool fetches only the diff: + +1. **Check `.git` dir, not just `dest` dir.** Previously the existence check was `os.path.exists(dest)`, which is True for any dir — including non-git dirs. Now checks `os.path.isdir(dest/.git)`, so a non-git dir doesn't cause `git pull` to fail. +2. **Fall back to re-clone on pull failure.** If `git pull --ff-only` fails (diverged branches, network errors, corrupted index, etc.), the old dir is moved aside to `.bak.` and a fresh clone is made. The install always ends in a usable state. +3. **Back up existing non-git dir.** If `dest` exists but isn't a git repo, it's backed up to `.bak.` and a fresh clone is made. +4. **Log which path was taken.** The return message says whether the tool was pulled, re-cloned (with backup path), or freshly cloned — so the user can see what happened. + +Effect: re-running install on a tool that's already cloned only fetches the diff (a few KB / MB), not the entire repo. This is the bandwidth-saving behaviour the user asked for. + +## Verification + +All 51 patches applied successfully: +- 28 git-ish pkg URL replacements (each old `pkg` string was unique within its file and matched exactly once). +- 6 script-type pkg-field injections (each matched exactly one installer block). +- 10 missing-repo lookups via web search. +- 3 type-mismatch fixes (uv → git / git_node). +- 4 user-provided URLs for previously-unresolved tools. +- 1 new ComfyUI tool entry added to `user_interfaces.py`. + +All 94 Python files under `src/` AST-parse cleanly after the patches. The registry extractor re-imports every layer module and confirms all 51 patches landed + the new ComfyUI entry. Total registry size: 187 tools (was 186). + +0 `nicely-done` placeholder URLs remain in the registry. diff --git a/gitcommit b/gitcommit index cea8a7a..c4cd320 100755 --- a/gitcommit +++ b/gitcommit @@ -1,114 +1,126 @@ -AI-LSC Release v3.0 -- codename: Ankh of Jah +AI-LSC Release v3.3.0 -Full architectural rewrite from v2.4. This is not an incremental -release; the project fundamentally changed structure, scope, and -design philosophy. +Registry git-pull URL sync against the systems-architect reference +(ai-stack-guide-v12.md, "Approaching the Local AI Stack Like a Systems +Architect") + bandwidth-aware git-pull-on-update logic for already-cloned +tools + new ComfyUI registry entry. 52 patches across 8 layer files plus +a runtime/installer.py hardening. -v2.4 was a monolithic tool launcher. -v3.0 is a metadata-driven infrastructure management platform. +Five categories of installer-URL patches: -What changed: +A. git / git_node / custom installer `pkg` URLs corrected to match the + v12 markdown reference (28 patches). The previous registry was + pointing at placeholder repos (``github.com/nicely-done/...``) or at + wrong upstreams (e.g. ``airllm`` at ``liguodongiot/llm-airforce``, + ``llamacpp`` at ``ggerganov/llama.cpp`` instead of ``ggml-org/llama.cpp``). -Architecture - - Migrated from flat script layout to src/ai_lsc/ package with 22 - core modules, 13 registry layer files, and clean separation of - concerns (registry, runtime, stack, skills, agents, ui) - - Introduced AI_LSC_BASE_DIR env var chain: bootstrap writes .env, - launcher reads it, constants.py resolves it -- entire runtime - derives from one variable. No hardcoded paths leak outside constants. - - ADR-001 established: Capability as the foundational abstraction. - Every subsystem (templates, pipelines, skills, containers, - dashboards, monitoring) points at Capability. Tool is a - implementation detail. Swap Ollama for vLLM -- nothing above the - registry notices. See docs/ADR-001-capability-architecture.md. +B. script-type installers (fabric, grafana_alloy, llamafile, meilisearch, + ollama, qdrant) get a new ``pkg`` field added referencing the github + repo, while the existing working ``cmd`` (curl release tarball, etc.) + is left untouched (6 patches). -Registry - - 115 registered tools organized across 13 infrastructure layers - (Host Platform -> Containers). Each entry carries full metadata: - installer, launcher, health probe, configuration, export rules, - capability mapping. - - Modular per-layer registry: ai_lsc/registry/layers/*.py -- adding a - tool means adding a dict entry, not touching Python logic. - - Registry auto-merges new keys across releases without user action. +C. registry-only git tools with no v12 markdown entry were resolved + via web search to their official upstreams (10 patches): + - agent_reach -> Panniantong/Agent-Reach + - everos_memory -> EverMind-AI/EverOS + - headroom -> headroomlabs-ai/headroom + - mnemo_cortex -> GuyMannDude/mnemo-cortex + - nightshift -> johndaskovsky/nightshift + - openbrain -> NateBJones-Projects/OB1 + - turbovec -> ryancodrai/turbovec + - crossplane -> crossplane/crossplane + - keycloak -> keycloak/keycloak + - dma -> distcc/distcc (closest parent) -Stack Templates - - Template system expresses infrastructure intent, not install scripts. - - 4 included templates (Claude Code Setup, Agentic OS Stack, - SaaS Integrations, Free Claude Code). - - Templates reference tool IDs; the registry provides all install and - launch logic. Zero duplication. - - Stack Wizard UI for template selection and deployment. +D. type-mismatch fixes (3 patches): the v12 markdown lists these 3 + tools with installer type `git` or `git_node`. The user manually + tested every entry in the md before publishing it; the registry + had them as `uv` package-manager installs, which would have + called `uv tool install ` against PyPI — wrong for tools that + are installed by cloning their github repo: + - pm_skills : uv:pm-skills -> git:https://github.com/product-on-purpose/pm-skills + - agno : uv:agno -> git:https://github.com/agno-agi/agno + - openhands : uv:openhands-ai -> git_node:https://github.com/All-Hands-AI/OpenHands.git -Runtime - - Multi-runtime execution: native, Podman, Docker Compose, LXC. - - RuntimeExecutor unifies install/start/stop/health across all targets. - - Container export generates Podman Quadlet, Docker Compose, or LXC - config from a template -- same template, different output format. - - Fixed LXC config path bug (Path string concat) and hardcoded - /mnt/AI mount targets. +E. user-provided URLs for the 4 previously-unresolved registry-only + tools (4 patches). These tools had placeholder + `github.com/nicely-done/` URLs; the user provided the + official upstream URLs directly: + - algory -> aryaghan-mutum/algory + - atlas_os -> atlas-os/atlas + - eagle_eye -> thoughtfuldev/eagleeye + - glassmind -> khodges42/glassMind -Bootstrap - - Fully portable: extracts anywhere, detects parent directory tree, - auto-resolves base dir. No assumptions about install location. - - Arch Linux: --system-site-packages venv sees pacman-installed - PySide6, avoids pip compile hell. - - Python version stamping detects stale venv after pacman -Syu, - auto-recreates. - - Cleans stale ~/.local/bin/ai-lsc and pipx installs from v2.x. - - python-pyside6 availability check before attempting pacman install - (package not in official Arch repos). +New tool entry (1): + - comfyui (user_interfaces.py): ComfyUI was referenced in the + `ai-image-gen-local.json` stack template but had no registry + entry. Added as a Level 10 (Human Interface & System Operations) + tool with installer `git:https://github.com/comfy-org/comfyui`, + launcher `python main.py --listen 0.0.0.0 --port 8188`, + deps [cuda], license GPL-3.0. Total registry size is now 187 + tools (was 186). -Installer - - Supports pacman, apt, dnf, pip, git clone, npm, and manual installers. - - Dependency expansion: installing a template auto-detects and installs - missing prerequisite tools. - - License gate: tools requiring license acceptance prompt before install. +Runtime: bandwidth-aware git-pull-on-update (runtime/installer.py) -Verification - - Per-tool health probes: process check, port check, API ping. - - Verification dashboard shows install status for all 115 tools. - - Hardware detection: GPU driver, CUDA version, memory, disk. + The existing install_git / install_git_node methods already did + `git pull --ff-only` if the destination dir existed, but the check + was `os.path.exists(dest)` — which is True for any dir, not just a + git working tree. An empty or non-git dir at the destination would + cause `git pull` to fail and abort the install. Hardened to: -UI - - PySide6 dark-themed interface with sidebar navigation across all - 13 layers. - - Dashboard with live service status, log feed, and system health. - - Infrastructure layer pages with per-tool ServiceRow widgets. - - Code analysis panel: ripgrep, fd, AST inspection, tree-sitter parsing. - - Skills console with modelfile tree browser and model pull. - - IPC stack editor for pipeline visualization. - - Settings page with base directory configuration. - - Fixed 8 NameError crashes in exception handlers (except without as). - - Fixed thread-unsafe UI mutation from background install thread. - - Fixed stack wizard KeyError on missing metadata fields. + 1. Check `os.path.isdir(dest/.git)` to confirm a real git repo. + 2. On pull failure (diverged branches, network errors, corrupted + index, etc.), move the old dir aside to `.bak.` + and re-clone fresh — so the install always ends in a usable + state instead of leaving a half-broken tree. + 3. If the dest dir exists but is not a git repo, back it up and + clone fresh. + 4. Log clearly which path was taken (pulled / re-cloned / new clone + / non-git-dir backed up) so the user can see what happened. -Skills - - Skill definitions as JSON manifests with capability requirements. - - SkillRuntimeResolver maps skill requests to available capabilities. - - 6 included skills (code-reviewer, vector-search, rag-analyst, - stack-operator, agent-orchestrator, redis-operator). + Effect: re-running install on a tool that's already cloned only + fetches the diff (a few KB / MB), not the entire repo. -Agents (infrastructure only -- deferred to v4.0) - - Redis pub/sub bridge for inter-agent communication. - - Tool bridge connecting agent function-calling to RuntimeExecutor. - - Ollama tools interface for model management. - - Model pool with tier routing (8B/14B/32B/70B). - - Dispatcher and clarification gate for multi-turn agent loops. - - All symbols safely stubbed; no agent execution in v3.0. +Intentionally NOT touched: + - apex (md says `pip — https://github.com/NVIDIA/apex`): kept as + uv:apex (pip-installed). The md's `pip` installer type is + authoritative and the user did not call this one out. + - 12 git-ish installers that already matched the v12 reference + (anythingllm, dify, heretic, homelab, invokeai, koboldcpp, + librechat, mcp_drift_state_tracker, openjarvis, paperlessngx, + synapscli, wayland_ai). + - 3 registry-only git tools with real-looking URLs already in + place (goose -> block/goose, nvidia_agent_skills -> + NVIDIA/agent-skills, picode -> jasonjmcghee/picode.git). + - APP_CODENAME ("Decalogue") and all historical codename + references in docstrings / UI labels / README banner / bootstrap + banner — left as-is per user's clarification. -Bug fixes from v2.4 - - Resolved externally-managed-environment error on Arch (venv isolation) - - Removed ModuleNotFoundError from stale ~/.local/bin/ai-lsc entry point - - Root launcher (ai_lsc.py) replaces pip entry-point -- no install needed - - Convenience launcher (run.sh) sources .env for proper env injection - - Path("/var/lib/lxc" / name) string concat crash -> proper Path join - - 8x except Exception without as exc -> all now capture correctly - - Thread-unsafe _run_install UI calls -> QTimer.singleShot dispatch - - Hardcoded /mnt/AI LXC mount targets -> dynamic path resolution - - Stack wizard meta['name'] KeyError -> .get() with safe defaults - - python-pyside6 pacman fallback for Arch repos that don't carry it +All 0 placeholder `github.com/nicely-done/...` URLs have been +removed from the registry. -Files changed: essentially everything. See ADR-001 for the architectural -rationale and the vocabulary that will govern v3.0 stabilization and -v4.0 development. -``` \ No newline at end of file +Versioning: + - pyproject.toml: 3.2.0 -> 3.3.0 + - src/ai_lsc/constants.py: APP_VERSION 3.2.0 -> 3.3.0 + (APP_CODENAME unchanged: "Decalogue") + - docs/REGISTRY-URLS-v3.3.0.md: per-file old -> new URL table. + +Verification: + - All 94 Python files under src/ AST-parse cleanly. + - Registry extractor re-reads the patched tree and confirms all 52 + patches landed + the new ComfyUI entry. Total tools: 187 (was + 186). + - Each old `pkg` URL string was unique within its file and matched + exactly once during the patch — no blind global replaces. + - install_git / install_git_node hardened: the new logic + branches on `os.path.isdir(.git)`, falls back to re-clone on pull + failure, and uses `import time` for backup-dir timestamps. All + confirmed present in installer.py. + - 0 `nicely-done` placeholder URLs remain in the registry. + +Layer ladder (unchanged from v3.2): + L1 Host Platform & Infrastructure L6 Multi-Agent Orchestration Runtimes + L2 Development Runtime & Environment L7 Agentic Software Engineering & Sandboxes + L3 GPU Acceleration & Optimization L8 Decentralized Knowledge & Vector Stores + L4 Local Inference Engines L9 Data Extraction & Pipeline Harvest + L5 Intelligent API Routers & Proxies L10 Human Interface & System Operations diff --git a/pyproject.toml b/pyproject.toml index d3fab71..e27ce53 100755 --- a/pyproject.toml +++ b/pyproject.toml @@ -7,7 +7,7 @@ build-backend = "setuptools.build_meta" [project] name = "ai-lsc" -version = "3.1.1" +version = "3.3.0" description = "AI Local Stack Control — PySide6 desktop app for orchestrating local AI/ML tool stacks" readme = "README.md" license = {text = "AGPL-3.0-or-later"} diff --git a/quickstart.md b/quickstart.md index f5eeb2b..494cab4 100755 --- a/quickstart.md +++ b/quickstart.md @@ -249,7 +249,7 @@ for f in os.listdir('ai_lsc/registry/layers'): ## Next Steps -- Explore the **Infrastructure** section to understand the 13-layer architecture +- Explore the **Infrastructure** section to understand the 10-layer architecture - Try different **Stack Templates** to find the right combination for your workflow - Set up the **Skills Console** to extend your tool capabilities - Use **Code Analysis** to inspect and understand your project dependencies diff --git a/scripts/apply_10layer_taxonomy.py b/scripts/apply_10layer_taxonomy.py new file mode 100755 index 0000000..259d803 --- /dev/null +++ b/scripts/apply_10layer_taxonomy.py @@ -0,0 +1,913 @@ +#!/usr/bin/env python3 +"""Finish the 10-Layer Systems Architecture Taxonomy migration for AI-LSC. + +This is the corrected, completed version of the partial migration that was +started in the repo root ``apply_taxonomy_migration.py`` (which had defect +fixes needed: regexes that could not match multi-word layer names, a ``sys`` +scoping bug, lossy installer handling, and no ``defaults.py`` install). + +Stages +------ +1. defaults — build the new 108-tool ``defaults.py``: taxonomy fields + (level/layer/role/category) + richer descriptions from the + master-target registry; operational fields (installer, + launcher, deps, flags, license, filesystem) preserved from + the previous registry. +2. layers — realign the 11 modular layer files (185 tools) to the + 10-layer taxonomy; classify the 78 tools absent from the + master registry; reconcile ``kanban`` into the layer files. +3. wiring — migrate ``stack/connections.py``: static layer= values get + their new-layer names; loop-based bulk allocations become + dynamic registry lookups (with a supplement for wired tools + outside DEFAULT_REGISTRY). +4. categorymap— extend the db_manager CATEGORY_MAP (+ reference file) so + the categorisation cascade covers every registry category. +5. docfixes — validator level range, stale header comments. + +Run from the repo root of the tree being migrated: + python3 scripts/migrate_10layer.py --new-defaults /path/to/new/defaults.py [stage...] +""" + +from __future__ import annotations + +import argparse +import importlib.util +import re +import sys +from pathlib import Path + +REPO = Path.cwd().resolve() # tree being migrated +SRC = REPO / "src" + +NEW_LAYERS = [ + "Host Platform & Infrastructure", + "Development Runtime & Environment", + "GPU Acceleration & Optimization", + "Local Inference Engines", + "Intelligent API Routers & Proxies", + "Multi-Agent Orchestration Runtimes", + "Agentic Software Engineering & Sandboxes", + "Decentralized Knowledge & Vector Stores", + "Data Extraction & Pipeline Harvest", + "Human Interface & System Operations", +] +LAYER_LEVEL = {name: i + 1 for i, name in enumerate(NEW_LAYERS)} + +# Classification of the 78 modular-layer tools that are absent from the +# 108-tool master registry. Assignments follow the 10-layer philosophy: +# L1 foundational daemons (data, isolation, edge, identity, secrets) +# L2 runtimes, compilers, build, debug, shells, VCS +# L6 agent coordination / reasoning / workflow frameworks +# L7 agentic software engineering (coding agents, code skills) +# L8 agent memory + vector/graph stores +# L10 human interfaces, telemetry, IaC, cluster + security operations +TOOL_CLASSIFICATION: dict[str, str] = { + # L1 — Host Platform & Infrastructure + "certbot": "Host Platform & Infrastructure", + "cloudflared": "Host Platform & Infrastructure", + "nginx": "Host Platform & Infrastructure", + "docker": "Host Platform & Infrastructure", + "podman": "Host Platform & Infrastructure", + "lxc": "Host Platform & Infrastructure", + "firecracker": "Host Platform & Infrastructure", + "qemu": "Host Platform & Infrastructure", + "libvirt": "Host Platform & Infrastructure", + "tmux": "Host Platform & Infrastructure", + "keycloak": "Host Platform & Infrastructure", + "vault": "Host Platform & Infrastructure", + "fail2ban": "Host Platform & Infrastructure", + # L2 — Development Runtime & Environment + "bash": "Development Runtime & Environment", + "fish": "Development Runtime & Environment", + "zsh": "Development Runtime & Environment", + "mksh": "Development Runtime & Environment", + "git": "Development Runtime & Environment", + "deno": "Development Runtime & Environment", + "go": "Development Runtime & Environment", + "java_jdk": "Development Runtime & Environment", + "julia": "Development Runtime & Environment", + "nodejs": "Development Runtime & Environment", + "perl": "Development Runtime & Environment", + "php": "Development Runtime & Environment", + "ruby": "Development Runtime & Environment", + "rust": "Development Runtime & Environment", + "gcc": "Development Runtime & Environment", + "make": "Development Runtime & Environment", + "cmake": "Development Runtime & Environment", + "bison": "Development Runtime & Environment", + "fakeroot": "Development Runtime & Environment", + "patchelf": "Development Runtime & Environment", + "pkg_config": "Development Runtime & Environment", + "upx": "Development Runtime & Environment", + "uv": "Development Runtime & Environment", + "gdb": "Development Runtime & Environment", + "ltrace": "Development Runtime & Environment", + "strace": "Development Runtime & Environment", + "valgrind": "Development Runtime & Environment", + "distcc": "Development Runtime & Environment", + "dma": "Development Runtime & Environment", + # L3 — GPU Acceleration & Optimization + "tinygrad": "GPU Acceleration & Optimization", + # L4 — Local Inference Engines + "sglang": "Local Inference Engines", + # L5 — Intelligent API Routers & Proxies + "meshllm": "Intelligent API Routers & Proxies", + # L6 — Multi-Agent Orchestration Runtimes + "agent_reach": "Multi-Agent Orchestration Runtimes", + "algory": "Multi-Agent Orchestration Runtimes", + "atlas_os": "Multi-Agent Orchestration Runtimes", + "glassmind": "Multi-Agent Orchestration Runtimes", + "headroom": "Multi-Agent Orchestration Runtimes", + "honcho": "Multi-Agent Orchestration Runtimes", + "letta": "Multi-Agent Orchestration Runtimes", + "nightshift": "Multi-Agent Orchestration Runtimes", + "nvidia_agent_skills": "Multi-Agent Orchestration Runtimes", + "odysseus": "Multi-Agent Orchestration Runtimes", + "openbrain": "Multi-Agent Orchestration Runtimes", + "ray": "Multi-Agent Orchestration Runtimes", + # L7 — Agentic Software Engineering & Sandboxes + "gemini_cli": "Agentic Software Engineering & Sandboxes", + "goose": "Agentic Software Engineering & Sandboxes", + "opencode": "Agentic Software Engineering & Sandboxes", + "qwen_code": "Agentic Software Engineering & Sandboxes", + "zcoder": "Agentic Software Engineering & Sandboxes", + "picode": "Agentic Software Engineering & Sandboxes", + "graphify": "Agentic Software Engineering & Sandboxes", + # L8 — Decentralized Knowledge & Vector Stores + "everos_memory": "Decentralized Knowledge & Vector Stores", + "mem0": "Decentralized Knowledge & Vector Stores", + "mnemo_cortex": "Decentralized Knowledge & Vector Stores", + "turbovec": "Decentralized Knowledge & Vector Stores", + # L10 — Human Interface & System Operations + "hermes_webui": "Human Interface & System Operations", + "jan": "Human Interface & System Operations", + "btop": "Human Interface & System Operations", + "eagle_eye": "Human Interface & System Operations", + "crossplane": "Human Interface & System Operations", + "pssh": "Human Interface & System Operations", + "n8n": "Human Interface & System Operations", + "clamav": "Human Interface & System Operations", + "trivy": "Human Interface & System Operations", + "opa": "Human Interface & System Operations", +} + +# Categories added to the CATEGORY_MAP cascade for the classified tools +# (category -> layer). Role mirrors the category, per existing convention. +EXTRA_CATEGORY_LAYERS: dict[str, str] = { + "VCS": "Development Runtime & Environment", + "Shell": "Development Runtime & Environment", + "Runtime": "Development Runtime & Environment", + "Build": "Development Runtime & Environment", + "Build Monitoring": "Development Runtime & Environment", + "Distributed Compilation": "Development Runtime & Environment", + "Debugging": "Development Runtime & Environment", + "Terminal": "Host Platform & Infrastructure", + "Networking": "Host Platform & Infrastructure", + "Containers": "Host Platform & Infrastructure", + "Virtualization": "Host Platform & Infrastructure", + "Auth": "Host Platform & Infrastructure", + "Secrets Management": "Host Platform & Infrastructure", + "Intrusion Prevention": "Host Platform & Infrastructure", + "Antivirus": "Human Interface & System Operations", + "Container Security": "Human Interface & System Operations", + "Policy Engine": "Human Interface & System Operations", + "IaC Control Plane": "Human Interface & System Operations", + "Cluster SSH": "Human Interface & System Operations", + "Project Management": "Human Interface & System Operations", + "Workflow Automation": "Multi-Agent Orchestration Runtimes", + "Multi-Agent": "Multi-Agent Orchestration Runtimes", + "AI Agent": "Multi-Agent Orchestration Runtimes", + "Agent OS": "Multi-Agent Orchestration Runtimes", + "Agent Toolkit": "Multi-Agent Orchestration Runtimes", + "Agent Framework": "Multi-Agent Orchestration Runtimes", + "Reasoning Engine": "Multi-Agent Orchestration Runtimes", + "Agent Workflow": "Multi-Agent Orchestration Runtimes", + "Infrastructure": "Multi-Agent Orchestration Runtimes", + "Distributed Compute": "Multi-Agent Orchestration Runtimes", + "AI Coding Agent": "Agentic Software Engineering & Sandboxes", + "Claude Code Skill": "Agentic Software Engineering & Sandboxes", + "Mesh Client": "Agentic Software Engineering & Sandboxes", + "LLM Mesh": "Intelligent API Routers & Proxies", + "LLM Serving": "Local Inference Engines", + "Persistent Memory": "Decentralized Knowledge & Vector Stores", + "Memory System": "Decentralized Knowledge & Vector Stores", + "Cortex Memory": "Decentralized Knowledge & Vector Stores", + "Chat Frontend": "Human Interface & System Operations", + "LLM GUI": "Human Interface & System Operations", + "Metrics": "Human Interface & System Operations", + "Observability": "Human Interface & System Operations", +} + +# The v3.1.1b db_manager (restored from the routing tarball) carries a +# richer 124-category cascade than the master target's 103-category map. +# These alt-only categories are preserved and translated to the 10-layer +# taxonomy so the categorisation cascade keeps its full coverage. +ALT_CATEGORY_TRANSLATIONS: dict[str, str] = { + "AI Assistant Platform": "Human Interface & System Operations", + "AI Augmentation": "Multi-Agent Orchestration Runtimes", + "AI Monitoring": "Human Interface & System Operations", + "AI Observability": "Human Interface & System Operations", + "AI Operating System": "Multi-Agent Orchestration Runtimes", + "Academic References": "Human Interface & System Operations", + "Agent Network": "Multi-Agent Orchestration Runtimes", + "Algorithm Toolkit": "Multi-Agent Orchestration Runtimes", + "Audio Parsing": "Data Extraction & Pipeline Harvest", + "Chat": "Human Interface & System Operations", + "Chat Agent Platform": "Human Interface & System Operations", + "Code Analysis": "Agentic Software Engineering & Sandboxes", + "Code Generation": "Agentic Software Engineering & Sandboxes", + "Computer Vision": "Data Extraction & Pipeline Harvest", + "Config Management": "Human Interface & System Operations", + "Container Ops": "Host Platform & Infrastructure", + "Context Manager": "Agentic Software Engineering & Sandboxes", + "Dashboard": "Human Interface & System Operations", + "Data Pipeline": "Data Extraction & Pipeline Harvest", + "Data Sync": "Data Extraction & Pipeline Harvest", + "Desktop Agent": "Human Interface & System Operations", + "Dev Automation": "Agentic Software Engineering & Sandboxes", + "Development": "Agentic Software Engineering & Sandboxes", + "Document Converter": "Data Extraction & Pipeline Harvest", + "Document Management": "Human Interface & System Operations", + "Document Understanding": "Data Extraction & Pipeline Harvest", + "Ebook Library": "Human Interface & System Operations", + "Ecosystem Dashboard": "Human Interface & System Operations", + "Efficient LLM": "Local Inference Engines", + "File Parsing": "Data Extraction & Pipeline Harvest", + "Find Tool": "Development Runtime & Environment", + "GPU": "GPU Acceleration & Optimization", + "Graph RAG": "Decentralized Knowledge & Vector Stores", + "Homepage": "Human Interface & System Operations", + "IaC": "Human Interface & System Operations", + "IaC Wrapper": "Human Interface & System Operations", + "Image Generation": "Human Interface & System Operations", + "Knowledge Graph": "Decentralized Knowledge & Vector Stores", + "Knowledge Graph Notes": "Human Interface & System Operations", + "LLM Evaluation": "Human Interface & System Operations", + "LLM Fine-tuning": "GPU Acceleration & Optimization", + "LLM Framework": "Multi-Agent Orchestration Runtimes", + "LLM Router": "Intelligent API Routers & Proxies", + "LLM Runtime": "Local Inference Engines", + "MCP Server": "Agentic Software Engineering & Sandboxes", + "Model Training": "GPU Acceleration & Optimization", + "Notes": "Human Interface & System Operations", + "OCI Export": "Host Platform & Infrastructure", + "Outliner": "Human Interface & System Operations", + "PDF Pipeline": "Data Extraction & Pipeline Harvest", + "Parser": "Development Runtime & Environment", + "Pipeline": "Intelligent API Routers & Proxies", + "Procfile Runner": "Multi-Agent Orchestration Runtimes", + "Prompt Tooling": "Agentic Software Engineering & Sandboxes", + "Provisioning": "Human Interface & System Operations", + "Proxy": "Intelligent API Routers & Proxies", + "Sandbox": "Host Platform & Infrastructure", + "Search Engine": "Decentralized Knowledge & Vector Stores", + "Search Tool": "Development Runtime & Environment", + "Serverless Framework": "Development Runtime & Environment", + "Single-File LLM": "Local Inference Engines", + "Skill Analysis": "Agentic Software Engineering & Sandboxes", + "Skill Inspection": "Agentic Software Engineering & Sandboxes", + "Spaced Repetition": "Human Interface & System Operations", + "Spec Writer": "Agentic Software Engineering & Sandboxes", + "Speech Recognition": "Data Extraction & Pipeline Harvest", + "Task Runner": "Human Interface & System Operations", + "Telemetry": "Human Interface & System Operations", + "Text-to-Speech": "Data Extraction & Pipeline Harvest", + "Uncensored Models": "Local Inference Engines", + "Vector Store": "Decentralized Knowledge & Vector Stores", + "Visualization": "Human Interface & System Operations", + "Web Crawler": "Data Extraction & Pipeline Harvest", + "Workflow": "Human Interface & System Operations", +} + + +# ── helpers ─────────────────────────────────────────────────────────── + +def load_module(path: Path, name: str): + spec = importlib.util.spec_from_file_location(name, path) + mod = importlib.util.module_from_spec(spec) + sys.modules[name] = mod + spec.loader.exec_module(mod) + return mod + + +def py_str(value: str) -> str: + """Render a string as a single-quoted Python literal (old-file style).""" + escaped = value.replace("\\", "\\\\").replace("'", "\\'") + return f"'{escaped}'" + + +def render_tool_block(tid: str, entry: dict, indent: str = " ") -> list[str]: + """Render one registry entry in the historical defaults.py style.""" + lines = [ + f"{indent}'{tid}': {{", + f'{indent}"name": {py_str(entry["name"])},', + f'{indent}"level": {entry["level"]},', + f'{indent}"layer": {py_str(entry["layer"])},', + f'{indent}"role": {py_str(entry["role"])},', + f'{indent}"category": {py_str(entry["category"])},', + f'{indent}"installer": {{', + ] + for key, val in entry["installer"].items(): + if key == "env_overrides": + lines.append(f'{indent} "env_overrides": {{') + for env_k, env_v in val.items(): + lines.append(f'{indent} {py_str(env_k)}: {py_str(env_v)},') + lines.append(f'{indent} }},') + elif isinstance(val, bool): + lines.append(f'{indent} "{key}": {val},') + elif isinstance(val, (int, float)): + lines.append(f'{indent} "{key}": {val},') + else: + lines.append(f'{indent} "{key}": {py_str(val)},') + lines.append(f'{indent}}},') + lines.append(f'{indent}"launcher": {{') + for key, val in entry["launcher"].items(): + if val is None or isinstance(val, bool): + lines.append(f'{indent} "{key}": {val},') + elif isinstance(val, (int, float)): + lines.append(f'{indent} "{key}": {val},') + else: + lines.append(f'{indent} "{key}": {py_str(val)},') + lines.append(f'{indent}}},') + lines.append(f'{indent}"deps": [') + lines += [f'{indent} {py_str(d)},' for d in entry["deps"]] + lines.append(f"{indent}],") + if "filesystem" in entry: + lines.append(f'{indent}"filesystem": {{') + for key, val in entry["filesystem"].items(): + lines.append(f'{indent} "{key}": {py_str(val)},') + lines.append(f'{indent}}},') + lines.append(f'{indent}"description": {py_str(entry["description"])},') + lines.append(f'{indent}"license": {py_str(entry["license"])},') + flags = entry["flags"] + lines.append(f'{indent}"flags": {{') + for key in ("has_cli", "has_gui", "has_web", "is_ollama", + "is_passive", "is_mcp", "is_skills_collection"): + lines.append(f'{indent} "{key}": {flags[key]},') + lines.append(f'{indent}}}') + lines.append(f"{indent}}},") + return lines + + +# ── Stage 1: defaults.py ───────────────────────────────────────────── + +DEFAULTS_HEADER = '''""" +AI-LSC — Default tool registry (108 tools, 10-Layer Systems Architecture). + +This is the first-boot seed registry. The canonical source of truth at +runtime is the set of modular per-layer files under +``ai_lsc/registry/layers`` (discovered by :mod:`ai_lsc.registry.loader`); +``RegistryManager`` seeds ``ecosystem.json`` from the merged layer files +and syncs structural fields (layer, level, role, category) from them on +every start while preserving user customisations. + +Convention +---------- +Every entry has the same top-level shape:: + + { + "name": , + "level": <1–10 taxonomy level (int)>, + "layer": , + "role": , + "category": , + "installer": {"type": , + "pkg": , + "cmd": , + "post_install" / "update_cmd" / "env_overrides": optional}, + "launcher": {"type": , + "cmd": , + "default_port": }, + "deps": [], + "description": , + "license": , + "flags": {}, + "filesystem": {optional install/config/cache/logs/models paths}, + } + +Launcher command placeholders +----------------------------- +``{port}``, ``{tools_root}``, ``{models_root}``, +``{workspaces_root}``, ``{base_dir}`` are resolved at launch time by +the ``ServiceRow`` dispatcher. + +Layer map (10-Layer Systems Architecture Taxonomy) +--------------------------------------------------- +L1 Host Platform & Infrastructure — databases, caches, isolation, edge daemons +L2 Development Runtime & Environment — runtimes, compilers, build, debug, search, VCS +L3 GPU Acceleration & Optimization — CUDA, mixed precision, tensor libraries +L4 Local Inference Engines — local LLM servers (vLLM, llama.cpp, Ollama) +L5 Intelligent API Routers & Proxies — LiteLLM, routers, mesh transport +L6 Multi-Agent Orchestration Runtimes — Swarm, AutoGen, CrewAI, reasoning engines +L7 Agentic Software Engineering & Sandboxes — OpenHands, Aider, Claude Code, code skills +L8 Decentralized Knowledge & Vector Stores — Chroma, Qdrant, Neo4j, agent memory +L9 Data Extraction & Pipeline Harvest — Docling, Crawl4AI, Whisper, ETL +L10 Human Interface & System Operations — chat consoles, telemetry, flow canvases, IaC + +Flags +----- +``has_cli`` / ``has_gui`` / ``has_web`` describe the active surface(s) a +user can interact with once the tool is running. + +``is_passive`` marks tools that are *consumed* (libraries, model packs, +CLIs without a daemon) rather than launched as long-running services. +``is_mcp`` marks MCP (Model Context Protocol) API tools. +``is_skills_collection`` marks bundled skill / capability definitions. + +NOTE: This dict is intentionally kept as a *literal* so that it can be + round-tripped through JSON without loss. Do NOT add non-serialisable + objects (Path, Enum, etc.) here. +""" + +# NOTE: This dict is intentionally kept as a *literal* so that it can be +# round-tripped through JSON without loss. Do NOT add non-serialisable +# objects (Path, Enum, etc.) here. + +''' + + +def stage_defaults(new_defaults_path: Path) -> None: + old_mod = load_module(SRC / "ai_lsc" / "registry" / "defaults.py", "old_defaults") + new_mod = load_module(new_defaults_path, "new_defaults") + old, new = old_mod.DEFAULT_REGISTRY, new_mod.DEFAULT_REGISTRY + + merged: dict[str, dict] = {} + for tid, entry in new.items(): + prev = old.get(tid, {}) + out = dict(entry) # taxonomy + description from the master target + # Operational metadata is preserved from the previous registry: + # the master-target file rewrote installers (placeholder URLs, + # dropped cmds), launchers (wrong binary names, systemd→tmux), + # deps (all edges wiped), licenses and flags. + for field in ("installer", "launcher", "deps", "flags", "license"): + if field in prev: + out[field] = prev[field] + if "filesystem" in prev: + out["filesystem"] = prev["filesystem"] + merged[tid] = out + + # sanity: every layer/level pair must be consistent with the taxonomy + for tid, entry in merged.items(): + assert entry["layer"] in LAYER_LEVEL, f"{tid}: unknown layer {entry['layer']!r}" + assert entry["level"] == LAYER_LEVEL[entry["layer"]], \ + f"{tid}: level {entry['level']} != taxonomy level for {entry['layer']!r}" + + lines = [DEFAULTS_HEADER, "DEFAULT_REGISTRY: dict = {"] + order = sorted(merged, key=lambda t: (merged[t]["level"], t)) + current_level = 0 + for tid in order: + entry = merged[tid] + if entry["level"] != current_level: + current_level = entry["level"] + banner = f"L{current_level}: {entry['layer']}" + pad = max(4, 62 - len(banner)) + lines.append("") + lines.append(f" # ── {banner} {'─' * pad}") + lines.append("") + lines += render_tool_block(tid, entry) + lines.append("}") + lines.append("") + + out_path = SRC / "ai_lsc" / "registry" / "defaults.py" + out_path.write_text("\n".join(lines), encoding="utf-8") + print(f"[defaults] wrote {out_path} ({len(merged)} tools)") + + +# ── Stage 2: layer files ───────────────────────────────────────────── + +def find_block_span(content: str, tid: str) -> tuple[int, int] | None: + """Locate `'tid': {` ... matching close brace in a layer file.""" + m = re.search(rf"^(\s*)['\"]{re.escape(tid)}['\"]\s*:\s*\{{", content, re.M) + if not m: + return None + start = m.start() + depth = 0 + for i in range(m.end() - 1, len(content)): + ch = content[i] + if ch == "{": + depth += 1 + elif ch == "}": + depth -= 1 + if depth == 0: + return start, i + 1 + return None + + +def set_field(block: str, key: str, value: str) -> str: + """Replace (or insert) a top-level "key": line in a tool block.""" + pattern = re.compile(rf'^(\s*)"{key}"\s*:\s*[^,\n]+,?$', re.M) + line = f'"{key}": {value},' + if pattern.search(block): + return pattern.sub(lambda m: f"{m.group(1)}{line}", block, count=1) + # insert after the opening brace line + return re.sub(r"^(\s*['\"][^'\"]+['\"]\s*:\s*\{)", + lambda m: f"{m.group(1)}\n {line}", block, count=1) + + +def stage_layers(new_defaults_path: Path) -> None: + new_mod = load_module(new_defaults_path, "new_defaults") + new = new_mod.DEFAULT_REGISTRY + layers_dir = SRC / "ai_lsc" / "registry" / "layers" + + # import merged registry from the tree being migrated + sys.path.insert(0, str(SRC)) + loader = importlib.import_module("ai_lsc.registry.loader") + merged = loader.load_merged_registry() + sys.path.pop(0) + + # resolve the final structural assignment for every registry tool + final: dict[str, dict[str, str]] = {} + for tid, entry in merged.items(): + if tid in new: + src = new[tid] + final[tid] = {"layer": src["layer"], "level": str(src["level"]), + "role": src["role"], "category": src["category"]} + else: + layer = TOOL_CLASSIFICATION.get(tid) + assert layer, f"no 10-layer classification for tool {tid!r}" + final[tid] = {"layer": layer, "level": str(LAYER_LEVEL[layer]), + "role": entry["role"], "category": entry["category"]} + + # kanban exists only in defaults.py — reconcile it into the layer files + old_mod = load_module(SRC / "ai_lsc" / "registry" / "defaults.py", "old_defaults_l") + kanban = old_mod.DEFAULT_REGISTRY.get("kanban") + kanban_target_file = "user_interfaces.py" + if kanban is not None and "kanban" not in merged: + kanban_layer = new.get("kanban", {}).get("layer", "Human Interface & System Operations") + kanban_level = new.get("kanban", {}).get("level", 10) + kanban_role = new.get("kanban", {}).get("role", kanban["role"]) + kanban_cat = new.get("kanban", {}).get("category", kanban["category"]) + final["kanban"] = {"layer": kanban_layer, "level": str(kanban_level), + "role": kanban_role, "category": kanban_cat} + + counts: dict[str, int] = {} + for path in sorted(layers_dir.glob("*.py")): + if path.name == "__init__.py": + continue + content = path.read_text(encoding="utf-8") + touched = 0 + for tid, fields in final.items(): + span = find_block_span(content, tid) + if span is None: + continue + block = content[span[0]:span[1]] + new_block = block + new_block = set_field(new_block, "layer", py_str(fields["layer"])) + new_block = set_field(new_block, "level", fields["level"]) + new_block = set_field(new_block, "role", py_str(fields["role"])) + new_block = set_field(new_block, "category", py_str(fields["category"])) + if new_block != block: + content = content[:span[0]] + new_block + content[span[1]:] + touched += 1 + if path.name == kanban_target_file and kanban is not None and "kanban" not in merged: + block = "\n".join(render_tool_block("kanban", { + **kanban, + "layer": final["kanban"]["layer"], + "level": int(final["kanban"]["level"]), + "role": final["kanban"]["role"], + "category": final["kanban"]["category"], + })) + # insert inside the TOOLS dict, before its closing brace + body = content.rstrip() + idx = body.rfind("\n}") + assert idx != -1, f"TOOLS closing brace not found in {path}" + content = body[:idx] + "\n\n" + block + "\n}\n" + touched += 1 + if touched: + path.write_text(content, encoding="utf-8") + counts[path.name] = touched + print(f"[layers] {path.name}: realigned {touched} tools") + + # refresh each layer-file module docstring to reference the new taxonomy + layer_doc_note = ( + "\nStructural fields (layer, level) follow the 10-Layer Systems\n" + "Architecture Taxonomy; tools may be regrouped across files in a\n" + "future pass — the loader merges by tool, not by filename.\n" + ) + for path in sorted(layers_dir.glob("*.py")): + if path.name == "__init__.py": + continue + content = path.read_text(encoding="utf-8") + m = re.match(r'^"""(.*?)"""', content, re.S) + if m and "10-Layer Systems" not in m.group(1): + doc = m.group(1).rstrip() + content = f'"""{doc}\n{layer_doc_note}"""' + content[m.end():] + path.write_text(content, encoding="utf-8") + + +# ── Stage 3: connections.py ────────────────────────────────────────── + +WIRING_PRELUDE = ''' + +# ── 10-layer taxonomy resolution ────────────────────────────────────── +# Static wiring entries carry their layer as a literal; loop-based bulk +# allocations resolve the layer dynamically from the registry so the +# wiring graph can never drift from the taxonomy again. +from ai_lsc.registry.defaults import DEFAULT_REGISTRY + +# Layer assignments for staged tools that live in the modular layer +# files but are not part of the shipped DEFAULT_REGISTRY seed. +_WIRING_LAYER_SUPPLEMENT: dict[str, str] = { + "agent_reach": "Multi-Agent Orchestration Runtimes", + "algory": "Multi-Agent Orchestration Runtimes", + "atlas_os": "Multi-Agent Orchestration Runtimes", + "clamav": "Human Interface & System Operations", + "crossplane": "Human Interface & System Operations", + "distcc": "Development Runtime & Environment", + "eagle_eye": "Human Interface & System Operations", + "everos_memory": "Decentralized Knowledge & Vector Stores", + "gemini_cli": "Agentic Software Engineering & Sandboxes", + "glassmind": "Multi-Agent Orchestration Runtimes", + "goose": "Agentic Software Engineering & Sandboxes", + "graphify": "Agentic Software Engineering & Sandboxes", + "headroom": "Multi-Agent Orchestration Runtimes", + "hermes_webui": "Human Interface & System Operations", + "honcho": "Multi-Agent Orchestration Runtimes", + "jan": "Human Interface & System Operations", + "letta": "Multi-Agent Orchestration Runtimes", + "mem0": "Decentralized Knowledge & Vector Stores", + "meshllm": "Intelligent API Routers & Proxies", + "mnemo_cortex": "Decentralized Knowledge & Vector Stores", + "n8n": "Human Interface & System Operations", + "nightshift": "Multi-Agent Orchestration Runtimes", + "nvidia_agent_skills": "Multi-Agent Orchestration Runtimes", + "odysseus": "Multi-Agent Orchestration Runtimes", + "openbrain": "Multi-Agent Orchestration Runtimes", + "opencode": "Agentic Software Engineering & Sandboxes", + "picode": "Agentic Software Engineering & Sandboxes", + "pssh": "Human Interface & System Operations", + "qwen_code": "Agentic Software Engineering & Sandboxes", + "sglang": "Local Inference Engines", + "tinygrad": "GPU Acceleration & Optimization", + "trivy": "Human Interface & System Operations", + "turbovec": "Decentralized Knowledge & Vector Stores", + "zcoder": "Agentic Software Engineering & Sandboxes", + "dma": "Development Runtime & Environment", + "opa": "Human Interface & System Operations", +} + + +def _wiring_layer(tool_id: str) -> str: + """Resolve a tool's 10-layer taxonomy layer for its wiring entry.""" + entry = DEFAULT_REGISTRY.get(tool_id) + if entry: + return entry.get("layer", "") + return _WIRING_LAYER_SUPPLEMENT.get(tool_id, "") + +''' + +SECTION_RENAMES = [ + ("# L1: Host Platform", + "# L1: Host Platform → Layer 1: Host Platform & Infrastructure"), + ("# L2: Development Environment", + "# L2: Development Environment → Layer 2: Development Runtime & Environment"), + ("# L3: GPU Runtime", + "# L3: GPU Runtime → Layer 3: GPU Acceleration & Optimization"), + ("# L4: Inference Engines", + "# L4: Inference Engines → Layer 4: Local Inference Engines"), + ("# L6: AI Endpoints (→ the restored \"Routing\" layer in the 11-layer taxonomy)", + "# L6: AI Endpoints → Layer 5: Intelligent API Routers & Proxies (10-layer taxonomy)"), + ("# L10: Intelligent Routing (folded into \"Orchestrators\" in the 11-layer taxonomy)", + "# L10: Intelligent Routing → Layer 5: Intelligent API Routers & Proxies (10-layer taxonomy)"), + ("# L7: Data & Knowledge Pipelines", + "# L7: Data & Knowledge Pipelines → Layer 8/9: Vector Stores + Data Extraction (10-layer taxonomy)"), + ("# L8: Automation & Execution", + "# L8: Automation & Execution → Layer 6/7: Orchestration + Agentic Engineering (10-layer taxonomy)"), + ("# L9: Observability", + "# L9: Observability → Layer 10: Human Interface & System Operations (10-layer taxonomy)"), + ("# L11: User Interfaces", + "# L11: User Interfaces → Layer 10: Human Interface & System Operations (10-layer taxonomy)"), + ("# L12: DevOps", + "# L12: DevOps → Layer 9/10: Data Extraction + System Operations (10-layer taxonomy)"), + ("# L13: Knowledge Management", + "# L13: Knowledge Management → Layer 8/10: Vector Stores + System Operations (10-layer taxonomy)"), + ("# L5: Distributed Runtime", + "# L5: Distributed Runtime → Layer 3/4: GPU + Inference Engines (10-layer taxonomy)"), +] + + +def stage_wiring(new_defaults_path: Path) -> None: + new_mod = load_module(new_defaults_path, "new_defaults") + new = new_mod.DEFAULT_REGISTRY + + layer_of: dict[str, str] = {} + for tid, entry in new.items(): + layer_of[tid] = entry["layer"] + for tid, layer in TOOL_CLASSIFICATION.items(): + layer_of.setdefault(tid, layer) + + path = SRC / "ai_lsc" / "stack" / "connections.py" + content = path.read_text(encoding="utf-8") + + # 1. Insert the taxonomy resolution prelude after the imports. + if "_wiring_layer" not in content: + anchor = "from typing import Any\n" + content = content.replace(anchor, anchor + WIRING_PRELUDE, 1) + + # 2. Static StackWiring entries: replace layer="" with the tool's + # new layer. Iterate over `_reg(StackWiring(` blocks. + parts = content.split("_reg(StackWiring(") + rebuilt = [parts[0]] + static_updated = 0 + for part in parts[1:]: + tid_m = re.search(r'tool_id\s*=\s*"([A-Za-z0-9_.:\-]+)"', part) + if tid_m: + tid = tid_m.group(1) + new_layer = layer_of.get(tid) + if new_layer: + part, n = re.subn( + r'layer\s*=\s*"[^"]*"', + f'layer="{new_layer}"', + part, count=1) + static_updated += n + rebuilt.append(part) + content = "_reg(StackWiring(".join(rebuilt) + + # 3. Loop-based bulk allocations -> dynamic lookups. + loop_pat = re.compile( + r'layer\s*=\s*"(?:DevOps|User Interfaces|Knowledge Management|' + r'Orchestrators|Host Platform|Development Environment|GPU Runtimes|' + r'Engines|Routing|Security|Observability)"') + content, loops_updated = loop_pat.subn('layer=_wiring_layer(_tid)', content) + + # 4. Refresh section header comments to the 10-layer taxonomy mapping. + for old, new_c in SECTION_RENAMES: + content = content.replace(old, new_c) + + path.write_text(content, encoding="utf-8") + print(f"[wiring] static layers updated: {static_updated}, " + f"loop allocations converted: {loops_updated}") + + +# ── Stage 4: CATEGORY_MAP ──────────────────────────────────────────── + +def category_map_lines(cmap: dict[str, dict]) -> str: + lines = ["CATEGORY_MAP: dict[str, dict[str, object]] = {"] + for cat in sorted(cmap): + val = cmap[cat] + lines.append( + f' "{cat}": {{"layer": "{val["layer"]}", ' + f'"level": {val["level"]}, "role": "{val["role"]}"' + '},') + lines.append("}") + return "\n".join(lines) + + +def stage_category_map() -> None: + # read the current CATEGORY_MAP from the restored v3.1.1b db_manager + # (full 124-category cascade in the old 11-layer taxonomy) + dbm = SRC / "ai_lsc" / "ui" / "pages" / "db_manager.py" + content = dbm.read_text(encoding="utf-8") + m = re.search( + r'CATEGORY_MAP:\s*dict\[str,\s*dict\[str,\s*object\]\]\s*=\s*\{.*?\n\}', + content, re.S) + assert m, "CATEGORY_MAP block not found in db_manager.py" + alt_map = eval(m.group(0).split("=", 1)[1]) # literal dict, safe to eval + + # the master target's 10-layer map (from apply_taxonomy_migration.py) + atm_path = REPO / "apply_taxonomy_migration.py" + atm = load_module(atm_path, "atm_map") + cmap = {cat: dict(val) for cat, val in atm.NEW_CATEGORY_MAP.items()} + + # extend with the categories introduced by the classified tools + for cat, layer in EXTRA_CATEGORY_LAYERS.items(): + if cat not in cmap: + cmap[cat] = {"layer": layer, "level": LAYER_LEVEL[layer], + "role": cat} + if "Project Management" not in cmap: + cmap["Project Management"] = { + "layer": "Human Interface & System Operations", "level": 10, + "role": "Project Management"} + + # preserve the alt cascade's richer coverage: keep its curated roles, + # translate the layer/level to the 10-layer taxonomy + for cat, val in alt_map.items(): + if cat in cmap: + continue + layer = ALT_CATEGORY_TRANSLATIONS.get(cat) + assert layer, f"no 10-layer translation for alt category {cat!r}" + cmap[cat] = {"layer": layer, "level": LAYER_LEVEL[layer], + "role": val.get("role", cat)} + + # every layer referenced must be a valid 10-layer name + for cat, val in cmap.items(): + assert val["layer"] in LAYER_LEVEL, f"{cat}: bad layer {val['layer']!r}" + assert val["level"] == LAYER_LEVEL[val["layer"]], \ + f"{cat}: level {val['level']} inconsistent with {val['layer']!r}" + + new_block = category_map_lines(cmap) + content = content[:m.start()] + new_block + content[m.end():] + + # refresh the stale header comment above the map + content = re.sub( + r'# ── Category → default Layer / Level / Role mapping ──+\n' + r'# Derived from the canonical registry \(11-layer taxonomy, v3\.1\.1b:\n' + r'# Routing=L5, Orchestrators=L6, Security=L7, Observability=L8,\n' + r'# User Interfaces=L9, DevOps=L10, Knowledge Management=L11\)\.\n' + r'# When the user picks a category these fields auto-fill; the user can\n' + r'# still override afterwards\.', + '# ── Category → default Layer / Level / Role mapping ──────────────────\n' + '# Derived from the canonical registry (10-Layer Systems Architecture\n' + '# Taxonomy). When the user picks a category these fields auto-fill;\n' + '# the user can still override afterwards.', + content) + + dbm.write_text(content, encoding="utf-8") + print(f"[categorymap] db_manager.py CATEGORY_MAP -> {len(cmap)} categories") + + # regenerate the standalone reference file + ref = SRC / "ai_lsc" / "ui" / "pages" / "db_manager_category_map.py" + ref.write_text( + "# This file contains the fully reorganized CATEGORY_MAP for db_manager.py\n" + "# mapped cleanly to the 10-Layer Systems Architecture.\n\n" + + new_block + "\n", + encoding="utf-8") + print(f"[categorymap] regenerated {ref.name}") + + +# ── Stage 5: doc fixes ─────────────────────────────────────────────── + +def stage_docfixes() -> None: + # validator: enforce the 10-level range of the new taxonomy + vpath = SRC / "ai_lsc" / "registry" / "validator.py" + content = vpath.read_text(encoding="utf-8") + content = content.replace( + " # Level must be 1–13\n" + ' level = entry.get("level")\n' + " if isinstance(level, int) and not (1 <= level <= 13):\n" + ' errors.append(f"{tool_id}: level {level} out of range 1-13")', + " # Level must be 1–10 (10-Layer Systems Architecture Taxonomy)\n" + ' level = entry.get("level")\n' + " if isinstance(level, int) and not (1 <= level <= 10):\n" + ' errors.append(f"{tool_id}: level {level} out of range 1-10 "\n' + ' f"(10-layer taxonomy)")') + vpath.write_text(content, encoding="utf-8") + print("[docfixes] validator level range 1-13 -> 1-10") + + # README layer table + file-tree note + rpath = REPO / "README.md" + readme = rpath.read_text(encoding="utf-8") + old_table_start = readme.find("| Layer | Tools | Examples |") + old_table_end = readme.find("![Infrastructure Layers]") + if old_table_start != -1 and old_table_end != -1: + new_table = ( + "| Layer | Tools | Examples |\n" + "|-------|-------|----------|\n" + "| L1 — Host Platform & Infrastructure | 28 | PostgreSQL, MariaDB, Redis, DuckDB, Podman, Docker, LXC, Firecracker, libvirt, nginx, Tmux, Keycloak, Vault |\n" + "| L2 — Development Runtime & Environment | 37 | Python, uv, Node.js, Deno, Go, Rust, GCC, make, ripgrep, fd, tree-sitter, git, gdb, valgrind |\n" + "| L3 — GPU Acceleration & Optimization | 5 | CUDA, CuPy, Apex, Unsloth, tinygrad |\n" + "| L4 — Local Inference Engines | 10 | vLLM, SGLang, llama.cpp, KoboldCPP, Llamafile, Ollama, TurboLLM, AirLLM |\n" + "| L5 — Intelligent API Routers & Proxies | 4 | LiteLLM Proxy, 9Router Proxy, MeshLLM, Fabric |\n" + "| L6 — Multi-Agent Orchestration Runtimes | 22 | Swarm, AutoGen, CrewAI, Agno, LangChain, Letta, OpenBrain, Ray, Glassmind |\n" + "| L7 — Agentic Software Engineering & Sandboxes | 17 | OpenHands, Aider, Claude Code, Codex, Gemini CLI, OpenCode, goose, spec-kit |\n" + "| L8 — Decentralized Knowledge & Vector Stores | 11 | ChromaDB, LanceDB, Qdrant, Neo4j, Elasticsearch, Meilisearch, Mem0, TurboVec |\n" + "| L9 — Data Extraction & Pipeline Harvest | 12 | Crawl4AI, Docling, MarkItDown, Whisper, Parakeet, Airweave, OpenDataloader |\n" + "| L10 — Human Interface & System Operations | 40 | Open WebUI, AnythingLLM, LibreChat, Flowise, n8n, Dify, Grafana, Prometheus, Terraform, Ansible |\n" + "\n" + ) + readme = readme[:old_table_start] + new_table + readme[old_table_end:] + readme = readme.replace( + "layers/ # 10 per-layer tool files", + "layers/ # 11 per-layer tool files (10-layer taxonomy)") + rpath.write_text(readme, encoding="utf-8") + print("[docfixes] README layer table updated") + + # quickstart stale reference + qpath = REPO / "quickstart.md" + quick = qpath.read_text(encoding="utf-8") + quick = quick.replace( + "the 13-layer architecture", "the 10-layer architecture") + qpath.write_text(quick, encoding="utf-8") + print("[docfixes] quickstart layer reference updated") + + +# ── main ───────────────────────────────────────────────────────────── + +def main() -> None: + ap = argparse.ArgumentParser() + ap.add_argument("--new-defaults", required=True, + help="path to the master-target 108-tool defaults.py") + ap.add_argument("stages", nargs="*", + default=["defaults", "layers", "wiring", + "categorymap", "docfixes"], + help="stages to run (default: all)") + args = ap.parse_args() + + new_defaults = Path(args.new_defaults).resolve() + stages = args.stages or ["defaults", "layers", "wiring", + "categorymap", "docfixes"] + if "defaults" in stages: + stage_defaults(new_defaults) + if "layers" in stages: + stage_layers(new_defaults) + if "wiring" in stages: + stage_wiring(new_defaults) + if "categorymap" in stages: + stage_category_map() + if "docfixes" in stages: + stage_docfixes() + print("[done]") + + +if __name__ == "__main__": + main() diff --git a/src/ai_lsc/constants.py b/src/ai_lsc/constants.py index 0d8ddce..0517d83 100755 --- a/src/ai_lsc/constants.py +++ b/src/ai_lsc/constants.py @@ -1,11 +1,9 @@ """ AI-LSC v3.1 — Application-wide constants. - Release codename: Ankh of Jah - Pure data: file names, schema version, required directories, default ports, -status styles, log colours, service licences, tree-skip patterns, and the -navigation layer order. No behaviour lives here. +status styles, log colours, service licences, tree-skip patterns, +and the reorganized 10-layer navigation layer order. """ import os @@ -14,13 +12,11 @@ import os # Overridable via AI_LSC_BASE_DIR environment variable. # Bootstrap sets this; the app resolves everything relative to it. BASE_DIR: str = os.environ.get("AI_LSC_BASE_DIR", "/mnt/AI") - -# LA-03: alias so run.sh --headless can import it CANONICAL_BASE_DIR: str = BASE_DIR # ── Filenames ──────────────────────────────────────────────────────────── -APP_VERSION: str = "3.1.1" -APP_CODENAME: str = "Ankh of Jah" +APP_VERSION: str = "3.3.0" +APP_CODENAME: str = "Decalogue" APP_DISPLAY_NAME: str = f"AI - Local Stack Control v{APP_VERSION} - http://dcos.net" CONFIG_FILE: str = "controller_config.json" APP_ICON_FILE: str = "ai-lsc-logo.png" @@ -31,16 +27,7 @@ MANIFEST_FILE_NAME: str = ".ai-lsc-project.json" JCL_FILE_NAME: str = ".ai-lsc-jobs.json" # ── Required sub-directories under BASE_DIR ──────────────────── -# The canonical /mnt/AI/ folder layout (v3.1.1b, 24 dirs). Per-tool -# subdirs (runtime//, configs//, dashboards//) are -# created on demand by InstallerManager; only top-level layout dirs are -# listed here so a fresh install has the full skeleton. -# -# App-internal storage that is NOT part of the canonical layout: -# registry/ — ecosystem.json tool DB (RegistryManager mkdirs it) -# registry/manifests — SHA256 hashes, build logs, chunking records -# bootstraps/ — legacy minimal bootstrap scripts (no longer created) -# staging/ — legacy quarantine zone (no longer created) +# The canonical /mnt/AI/ folder layout (v3.1.1b, 24 dirs). REQUIRED_DIRS: list[str] = [ "backends", # S3/MinIO/Ceph connection profiles + topology "distfiles", # permanent mirror of raw source tarballs + installers @@ -70,17 +57,35 @@ REQUIRED_DIRS: list[str] = [ # ── Default ports for every known tool ─────────────────────────────────── DEFAULT_PORTS: dict[str, int | None] = { - "postgresql": 5432, "mariadb": 3306, "redis": 6379, - "sqlite3": None, "python": None, "cuda": None, - "ollama": 11434, "llamacpp": 8080, "vllm": 8000, - "litellm": 4000, "chromadb": 8000, "whisper": None, - "docling": None, "aider": None, "claude_code": None, - "fabric": None, "btop": None, "glances": 61208, - "crewai": None, "autogen": None, - "hermes": 17050, "openwebui": 8080, "anythingllm": 3001, - "flowise": 3000, "dify": 80, "stack_exporter": None, - # Agentic OS stack additions - "qdrant": 6333, "librechat": 3080, "n8n": 5678, + "postgresql": 5432, + "mariadb": 3306, + "redis": 6379, + "sqlite3": None, + "python": None, + "cuda": None, + "ollama": 11434, + "llamacpp": 8080, + "vllm": 8000, + "litellm": 4000, + "chromadb": 8000, + "whisper": None, + "docling": None, + "aider": None, + "claude_code": None, + "fabric": None, + "btop": None, + "glances": 61208, + "crewai": None, + "autogen": None, + "hermes": 17050, + "openwebui": 8080, + "anythingllm": 3001, + "flowise": 3000, + "dify": 80, + "stack_exporter": None, + "qdrant": 6333, + "librechat": 3080, + "n8n": 5678, } # ── UI status label formatting ────────────────────────────────────────── @@ -91,11 +96,16 @@ STATUS_STYLES: dict[bool, tuple[str, str]] = { # ── Log source colours for the activity feed ──────────────────────────── LOG_SOURCE_COLORS: dict[str, str] = { - "Ollama": "#e67e22", "Tmux": "#3498db", - "Installer": "#2ecc71", "Audit": "#f39c12", - "Container": "#9b59b6", "SkillRuntime": "#1abc9c", - "Pipeline": "#e74c3c", "Lifecycle": "#2980b9", - "SelfHeal": "#8e44ad", "Compiler": "#e67e22", + "Ollama": "#e67e22", + "Tmux": "#3498db", + "Installer": "#2ecc71", + "Audit": "#f39c12", + "Container": "#9b59b6", + "SkillRuntime": "#1abc9c", + "Pipeline": "#e74c3c", + "Lifecycle": "#2980b9", + "SelfHeal": "#8e44ad", + "Compiler": "#e67e22", } LOG_COLOR_DEFAULT: str = "#bdc3c7" @@ -133,21 +143,26 @@ SERVICE_LICENSES: dict[str, str] = { TREE_SKIP_PATTERNS: set[str] = {".", "__pycache__", "node_modules", "vendor"} # ── Navigation layer order for the sidebar rack diagram ─────────────── +# Updated to the new reorganized 10-Layer Architecture NAV_LAYER_ORDER: list[str] = [ - "Host Platform", "Development Environment", "GPU Runtimes", - "Engines", "Routing", "Orchestrators", "Security", - "Observability", "User Interfaces", "DevOps", - "Knowledge Management", + "Host Platform & Infrastructure", + "Development Runtime & Environment", + "GPU Acceleration & Optimization", + "Local Inference Engines", + "Intelligent API Routers & Proxies", + "Multi-Agent Orchestration Runtimes", + "Agentic Software Engineering & Sandboxes", + "Decentralized Knowledge & Vector Stores", + "Data Extraction & Pipeline Harvest", + "Human Interface & System Operations", ] # ── Ollama server candidate paths (probed in order) ──────────────── -# The runtime probes these paths to locate the ollama server binary or -# service data. First match wins. OLLAMA_SERVER_CANDIDATES: list[str] = [ "ollama", # /mnt/AI/ollama "tools/ollama", # /mnt/AI/tools/ollama "runtime/ollama", # /mnt/AI/runtime/ollama - "bin/ollama", # /mnt/AI/bin/ollama + "bin/ollama" # /mnt/AI/bin/ollama ] # ── Model tier routing (reserved for v4.0 agentic layer) ────────── @@ -166,35 +181,99 @@ CLARIFICATION_CONFIRM_THRESHOLD: float = 0.70 # ── Qt Stylesheets ────────────────────────────────────────────────────── GLOBAL_STYLE: str = """ -QWidget { background-color: #161616; color: #e0e0e0; - font-family: 'Segoe UI', Arial, sans-serif; font-size: 13px; } -QGroupBox { border: 1px solid #333; border-radius: 6px; margin-top: 14px; - padding-top: 10px; font-weight: bold; color: #a5d6a7; } -QGroupBox::title { subcontrol-origin: margin; subcontrol-position: top left; - padding: 0 5px; left: 10px; } -QPushButton { background-color: #2c3e50; color: white; border: 1px solid #1a252f; - border-radius: 4px; padding: 6px 12px; font-weight: bold; } -QPushButton:hover { background-color: #34495e; } -QPushButton:pressed { background-color: #1a252f; } +QWidget { + background-color: #161616; + color: #e0e0e0; + font-family: 'Segoe UI', Arial, sans-serif; + font-size: 13px; +} +QGroupBox { + border: 1px solid #333; + border-radius: 6px; + margin-top: 14px; + padding-top: 10px; + font-weight: bold; + color: #a5d6a7; +} +QGroupBox::title { + subcontrol-origin: margin; + subcontrol-position: top left; + padding: 0 5px; + left: 10px; +} +QPushButton { + background-color: #2c3e50; + color: white; + border: 1px solid #1a252f; + border-radius: 4px; + padding: 6px 12px; + font-weight: bold; +} +QPushButton:hover { + background-color: #34495e; +} +QPushButton:pressed { + background-color: #1a252f; +} QLineEdit, QTextEdit, QComboBox, QSpinBox, QDoubleSpinBox { - background-color: #1e1e1e; border: 1px solid #444; - border-radius: 4px; padding: 5px; color: white; } -QTabWidget::pane { border: 1px solid #333; background-color: #1a1a1a; - border-radius: 4px; } -QTabBar::tab { background-color: #222; border: 1px solid #333; padding: 8px 15px; - margin-right: 2px; border-top-left-radius: 4px; border-top-right-radius: 4px; } -QTabBar::tab:selected { background-color: #3498db; color: white; font-weight: bold; } -QTableWidget, QTreeWidget, QListWidget { background-color: #1e1e1e; - gridline-color: #333; border: 1px solid #333; border-radius: 4px; } -QHeaderView::section { background-color: #2c3e50; color: white; padding: 4px; - border: 1px solid #1a252f; font-weight: bold; } + background-color: #1e1e1e; + border: 1px solid #444; + border-radius: 4px; + padding: 5px; + color: white; +} +QTabWidget::pane { + border: 1px solid #333; + background-color: #1a1a1a; + border-radius: 4px; +} +QTabBar::tab { + background-color: #222; + border: 1px solid #333; + padding: 8px 15px; + margin-right: 2px; + border-top-left-radius: 4px; + border-top-right-radius: 4px; +} +QTabBar::tab:selected { + background-color: #3498db; + color: white; + font-weight: bold; +} +QTableWidget, QTreeWidget, QListWidget { + background-color: #1e1e1e; + gridline-color: #333; + border: 1px solid #333; + border-radius: 4px; +} +QHeaderView::section { + background-color: #2c3e50; + color: white; + padding: 4px; + border: 1px solid #1a252f; + font-weight: bold; +} """ SIDEBAR_TREE_STYLE: str = """ - QTreeWidget { background-color: #111111; border: none; color: #bdc3c7; - font-family: 'Segoe UI'; font-size: 11px; } - QTreeWidget::item { padding: 6px; border-bottom: 1px solid #161616; } - QTreeWidget::item:hover { background-color: #1c1c1c; color: #fff; } - QTreeWidget::item:selected { background-color: #2c3e50; color: #2ecc71; - font-weight: bold; } +QTreeWidget { + background-color: #111111; + border: none; + color: #bdc3c7; + font-family: 'Segoe UI'; + font-size: 11px; +} +QTreeWidget::item { + padding: 6px; + border-bottom: 1px solid #161616; +} +QTreeWidget::item:hover { + background-color: #1c1c1c; + color: #fff; +} +QTreeWidget::item:selected { + background-color: #2c3e50; + color: #2ecc71; + font-weight: bold; +} """ diff --git a/src/ai_lsc/registry/defaults.py b/src/ai_lsc/registry/defaults.py index 0ecef6e..70dd1cb 100755 --- a/src/ai_lsc/registry/defaults.py +++ b/src/ai_lsc/registry/defaults.py @@ -1,10 +1,12 @@ """ -AI-LSC — Default registry data (~1 200 lines of pure data). +AI-LSC — Default tool registry (108 tools, 10-Layer Systems Architecture). -This is the *authoritative source of truth* for every tool known to the -ecosystem. On first run ``RegistryManager`` writes this dict to -``ecosystem.json``; on subsequent runs it merges in any new keys so that -the on-disk registry auto-evolves across releases without user action. +This is the first-boot seed registry. The canonical source of truth at +runtime is the set of modular per-layer files under +``ai_lsc/registry/layers`` (discovered by :mod:`ai_lsc.registry.loader`); +``RegistryManager`` seeds ``ecosystem.json`` from the merged layer files +and syncs structural fields (layer, level, role, category) from them on +every start while preserving user customisations. Convention ---------- @@ -12,19 +14,22 @@ Every entry has the same top-level shape:: { "name": , - "level": <1–13 taxonomy level (int)>, + "level": <1–10 taxonomy level (int)>, "layer": , "role": , "category": , - "installer": {"type": , + "installer": {"type": , "pkg": , - "cmd": }, - "launcher": {"type": , + "cmd": , + "post_install" / "update_cmd" / "env_overrides": optional}, + "launcher": {"type": , "cmd": , "default_port": }, "deps": [], "description": , + "license": , "flags": {}, + "filesystem": {optional install/config/cache/logs/models paths}, } Launcher command placeholders @@ -33,18 +38,18 @@ Launcher command placeholders ``{workspaces_root}``, ``{base_dir}`` are resolved at launch time by the ``ServiceRow`` dispatcher. -Layer map ---------- -L1 Host Platform — containers, databases, caches -L2 Development Environment — runtimes, search, parsing, frameworks -L3 GPU Runtimes — CUDA, optimisation, fine-tuning -L4 Engines — local LLM servers -L5 Orchestrators — serving, agents, routing, pipelines, workflow -L6 Security — auth, secrets, scanning, policy -L7 Observability — metrics, dashboards, tracing, evaluation -L8 User Interfaces — chat frontends, image gen, vision, speech -L9 DevOps — IaC, config management, coding agents, automation -L10 Knowledge Management — vector stores, search, graphs, documents, memory +Layer map (10-Layer Systems Architecture Taxonomy) +--------------------------------------------------- +L1 Host Platform & Infrastructure — databases, caches, isolation, edge daemons +L2 Development Runtime & Environment — runtimes, compilers, build, debug, search, VCS +L3 GPU Acceleration & Optimization — CUDA, mixed precision, tensor libraries +L4 Local Inference Engines — local LLM servers (vLLM, llama.cpp, Ollama) +L5 Intelligent API Routers & Proxies — LiteLLM, routers, mesh transport +L6 Multi-Agent Orchestration Runtimes — Swarm, AutoGen, CrewAI, reasoning engines +L7 Agentic Software Engineering & Sandboxes — OpenHands, Aider, Claude Code, code skills +L8 Decentralized Knowledge & Vector Stores — Chroma, Qdrant, Neo4j, agent memory +L9 Data Extraction & Pipeline Harvest — Docling, Crawl4AI, Whisper, ETL +L10 Human Interface & System Operations — chat consoles, telemetry, flow canvases, IaC Flags ----- @@ -55,32 +60,68 @@ user can interact with once the tool is running. CLIs without a daemon) rather than launched as long-running services. ``is_mcp`` marks MCP (Model Context Protocol) API tools. ``is_skills_collection`` marks bundled skill / capability definitions. + +NOTE: This dict is intentionally kept as a *literal* so that it can be + round-tripped through JSON without loss. Do NOT add non-serialisable + objects (Path, Enum, etc.) here. """ # NOTE: This dict is intentionally kept as a *literal* so that it can be # round-tripped through JSON without loss. Do NOT add non-serialisable # objects (Path, Enum, etc.) here. + DEFAULT_REGISTRY: dict = { - # ── L1: Host Platform ────────────────────────────────────── + # ── L1: Host Platform & Infrastructure ──────────────────────────── + + 'container_tool': { + "name": 'Container Toolkit', + "level": 1, + "layer": 'Host Platform & Infrastructure', + "role": 'Isolation', + "category": 'Isolation', + "installer": { + "type": 'git', + "pkg": 'https://github.com/nicely-done/container', + }, + "launcher": { + "type": 'desktop', + "cmd": 'container --help', + "default_port": None, + }, + "deps": [ + ], + "description": 'Lightweight bare-metal native container sandbox for direct code execution.', + "license": 'Proprietary', + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False, + "is_ollama": False, + "is_passive": False, + "is_mcp": False, + "is_skills_collection": False, + } + }, 'duckdb': { "name": 'DuckDB', "level": 1, - "layer": 'Host Platform', - "role": 'Foundation', + "layer": 'Host Platform & Infrastructure', + "role": 'Analytical Database', "category": 'Analytical Database', "installer": { "type": 'uv', - "pkg": 'duckdb' + "pkg": 'duckdb', }, "launcher": { "type": 'desktop', "cmd": 'python3 -c "import duckdb; print(duckdb.__version__)"', - "default_port": None + "default_port": None, }, - "deps": [], - "description": 'In-process analytical database with SQL support.', + "deps": [ + ], + "description": 'In-process analytical database engine supporting SQL for deep vector and metadata analytics.', "license": 'MIT', "flags": { "has_cli": True, @@ -89,26 +130,33 @@ DEFAULT_REGISTRY: dict = { "is_ollama": False, "is_passive": False, "is_mcp": False, - "is_skills_collection": False + "is_skills_collection": False, } }, 'mariadb': { "name": 'MariaDB', "level": 1, - "layer": 'Host Platform', - "role": 'Foundation', + "layer": 'Host Platform & Infrastructure', + "role": 'Database', "category": 'Database', "installer": { "type": 'pacman', - "pkg": 'mariadb' + "pkg": 'mariadb', }, "launcher": { "type": 'systemd', "cmd": 'mariadb', - "default_port": 3306 + "default_port": 3306, }, - "deps": [], - "description": 'Open source relational database.', + "deps": [ + ], + "filesystem": { + "install": '', + "config": 'configs/mariadb', + "data": 'data/mariadb', + "logs": 'logs/mariadb', + }, + "description": 'Open-source relational database serving transactional data across cluster networks.', "license": 'GPL-2.0', "flags": { "has_cli": True, @@ -117,32 +165,63 @@ DEFAULT_REGISTRY: dict = { "is_ollama": False, "is_passive": False, "is_mcp": False, - "is_skills_collection": False + "is_skills_collection": False, + } }, - "filesystem": { - "install": '', - "config": 'configs/mariadb', - "data": 'data/mariadb', - "logs": 'logs/mariadb' + 'opensandbox': { + "name": 'OpenSandbox', + "level": 1, + "layer": 'Host Platform & Infrastructure', + "role": 'Isolation', + "category": 'Isolation', + "installer": { + "type": 'git', + "pkg": 'https://github.com/nicely-done/opensandbox', + "post_install": 'python3 -m venv .venv && .venv/bin/pip install -r requirements.txt 2>/dev/null || .venv/bin/pip install -e .', + }, + "launcher": { + "type": 'tmux', + "cmd": 'cd {tools_root}/opensandbox && python3 serve.py --port {port}', + "default_port": 9100, + }, + "deps": [ + ], + "description": 'Secure sandboxed execution environment for testing agent output and running volatile bash routines.', + "license": 'Proprietary', + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": True, + "is_ollama": False, + "is_passive": False, + "is_mcp": False, + "is_skills_collection": False, } }, 'postgresql': { "name": 'PostgreSQL', "level": 1, - "layer": 'Host Platform', - "role": 'Foundation', + "layer": 'Host Platform & Infrastructure', + "role": 'Database', "category": 'Database', "installer": { "type": 'pacman', - "pkg": 'postgresql' + "pkg": 'postgresql', }, "launcher": { "type": 'systemd', "cmd": 'postgresql', - "default_port": 5432 + "default_port": 5432, }, - "deps": [], - "description": 'Relational database used by many frameworks.', + "deps": [ + ], + "filesystem": { + "install": '', + "config": 'configs/postgresql', + "data": 'data/postgresql', + "logs": 'logs/postgresql', + }, + "description": 'Relational database used by many frameworks for persistent storage, user logs, and key metadata.', "license": 'PostgreSQL', "flags": { "has_cli": True, @@ -151,32 +230,33 @@ DEFAULT_REGISTRY: dict = { "is_ollama": False, "is_passive": False, "is_mcp": False, - "is_skills_collection": False - }, - "filesystem": { - "install": '', - "config": 'configs/postgresql', - "data": 'data/postgresql', - "logs": 'logs/postgresql' + "is_skills_collection": False, } }, 'redis': { "name": 'Redis', "level": 1, - "layer": 'Host Platform', - "role": 'Foundation', + "layer": 'Host Platform & Infrastructure', + "role": 'Cache', "category": 'Cache', "installer": { "type": 'pacman', - "pkg": 'redis' + "pkg": 'redis', }, "launcher": { "type": 'systemd', "cmd": 'redis', - "default_port": 6379 + "default_port": 6379, }, - "deps": [], - "description": 'In-memory cache and message broker.', + "deps": [ + ], + "filesystem": { + "install": '', + "config": 'configs/redis', + "data": 'data/redis', + "logs": 'logs/redis', + }, + "description": 'In-memory cache and message broker for fast key-value lookups, rate limiting, and chat session state management.', "license": 'RSALv2', "flags": { "has_cli": True, @@ -185,32 +265,27 @@ DEFAULT_REGISTRY: dict = { "is_ollama": False, "is_passive": False, "is_mcp": False, - "is_skills_collection": False - }, - "filesystem": { - "install": '', - "config": 'configs/redis', - "data": 'data/redis', - "logs": 'logs/redis' + "is_skills_collection": False, } }, 'sqlite3': { "name": 'SQLite3', "level": 1, - "layer": 'Host Platform', - "role": 'Foundation', + "layer": 'Host Platform & Infrastructure', + "role": 'Database', "category": 'Database', "installer": { "type": 'pacman', - "pkg": 'sqlite' + "pkg": 'sqlite', }, "launcher": { "type": 'desktop', "cmd": 'sqlite3', - "default_port": None + "default_port": None, }, - "deps": [], - "description": 'C-language library implementing a SQL database engine.', + "deps": [ + ], + "description": 'C-language library implementing a self-contained, serverless, zero-configuration SQL database engine.', "license": 'MIT', "flags": { "has_cli": True, @@ -219,56 +294,59 @@ DEFAULT_REGISTRY: dict = { "is_ollama": False, "is_passive": False, "is_mcp": False, - "is_skills_collection": False + "is_skills_collection": False, } }, - - # ── L2: Development Environment ──────────────────────────── - 'cupy': { - "name": 'CuPy', - "level": 2, - "layer": 'Development Environment', - "role": 'GPU Acceleration', - "category": 'GPU Computing', + 'stack_exporter': { + "name": 'Stack Container Packager', + "level": 1, + "layer": 'Host Platform & Infrastructure', + "role": 'Runtime Packaging', + "category": 'Runtime Packaging', "installer": { - "type": 'uv', - "pkg": 'cupy-cuda12x' + "type": 'pacman', + "pkg": 'podman', }, "launcher": { "type": 'desktop', - "cmd": 'python3 -c "import cupy; print(cupy.__version__)"', - "default_port": None + "cmd": 'podman --version', + "default_port": None, }, - "deps": ['cuda'], - "description": 'NumPy-compatible GPU array computing library.', + "deps": [ + ], + "description": 'Compiles validated pipeline matrices into clean, native Podman or Docker specifications.', "license": 'MIT', "flags": { - "has_cli": False, + "has_cli": True, "has_gui": False, "has_web": False, "is_ollama": False, - "is_passive": True, + "is_passive": False, "is_mcp": False, - "is_skills_collection": False + "is_skills_collection": False, } }, + + # ── L2: Development Runtime & Environment ───────────────────────── + 'fd': { "name": 'fd', "level": 2, - "layer": 'Development Environment', - "role": 'Search', - "category": 'Find Tool', + "layer": 'Development Runtime & Environment', + "role": 'File Discovery', + "category": 'File Discovery', "installer": { "type": 'pacman', - "pkg": 'fd' + "pkg": 'fd', }, "launcher": { "type": 'desktop', "cmd": 'fd --version', - "default_port": None + "default_port": None, }, - "deps": [], - "description": 'Fast find command alternative.', + "deps": [ + ], + "description": 'A simple, fast, and user-friendly alternative to find, enabling agents to scan filesystems in milliseconds.', "license": 'MIT', "flags": { "has_cli": True, @@ -277,26 +355,27 @@ DEFAULT_REGISTRY: dict = { "is_ollama": False, "is_passive": False, "is_mcp": False, - "is_skills_collection": False + "is_skills_collection": False, } }, 'python': { "name": 'Python Environment', "level": 2, - "layer": 'Development Environment', - "role": 'Build System', - "category": 'Runtime', + "layer": 'Development Runtime & Environment', + "role": 'Runtime Environment', + "category": 'Runtime Environment', "installer": { "type": 'pacman', - "pkg": 'python-pip' + "pkg": 'python-pip', }, "launcher": { "type": 'desktop', "cmd": 'python3 --version', - "default_port": None + "default_port": None, }, - "deps": [], - "description": 'Python core interpreter and virtual environments.', + "deps": [ + ], + "description": 'Python core interpreter and virtual environments (venv), the foundation for almost all local AI libraries.', "license": 'Python', "flags": { "has_cli": True, @@ -305,26 +384,27 @@ DEFAULT_REGISTRY: dict = { "is_ollama": False, "is_passive": True, "is_mcp": False, - "is_skills_collection": False + "is_skills_collection": False, } }, 'ripgrep': { "name": 'ripgrep (rg)', "level": 2, - "layer": 'Development Environment', - "role": 'Search', - "category": 'Search Tool', + "layer": 'Development Runtime & Environment', + "role": 'Text Search', + "category": 'Text Search', "installer": { "type": 'pacman', - "pkg": 'ripgrep' + "pkg": 'ripgrep', }, "launcher": { "type": 'desktop', "cmd": 'rg --version', - "default_port": None + "default_port": None, }, - "deps": [], - "description": 'Fast recursive search tool (grep replacement).', + "deps": [ + ], + "description": 'Fast recursive search tool that respects gitignore rules, serving as the text retrieval engine for coding agents.', "license": 'MIT', "flags": { "has_cli": True, @@ -333,26 +413,56 @@ DEFAULT_REGISTRY: dict = { "is_ollama": False, "is_passive": False, "is_mcp": False, - "is_skills_collection": False + "is_skills_collection": False, + } + }, + 'sst': { + "name": 'SST (Serverless Stack)', + "level": 2, + "layer": 'Development Runtime & Environment', + "role": 'Infrastructure as Code', + "category": 'Infrastructure as Code', + "installer": { + "type": 'npm', + "pkg": 'sst', + }, + "launcher": { + "type": 'desktop', + "cmd": 'sst --version', + "default_port": None, + }, + "deps": [ + ], + "description": 'Framework for building full-stack applications on local bare-metal cluster infrastructure.', + "license": 'MIT', + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False, + "is_ollama": False, + "is_passive": False, + "is_mcp": False, + "is_skills_collection": False, } }, 'tree_sitter': { "name": 'tree-sitter', "level": 2, - "layer": 'Development Environment', - "role": 'Parsing', - "category": 'Parser', + "layer": 'Development Runtime & Environment', + "role": 'Parsing Engine', + "category": 'Parsing Engine', "installer": { "type": 'uv', - "pkg": 'tree-sitter' + "pkg": 'tree-sitter', }, "launcher": { "type": 'desktop', "cmd": 'tree-sitter --version', - "default_port": None + "default_port": None, }, - "deps": [], - "description": 'Incremental parsing system for source code.', + "deps": [ + ], + "description": 'Incremental parsing system for source code, allowing real-time syntax tree generation for coding agents.', "license": 'MIT', "flags": { "has_cli": True, @@ -361,28 +471,31 @@ DEFAULT_REGISTRY: dict = { "is_ollama": False, "is_passive": True, "is_mcp": False, - "is_skills_collection": False + "is_skills_collection": False, } }, - # ── L3: GPU Runtime ──────────────────────────────────────── + # ── L3: GPU Acceleration & Optimization ─────────────────────────── + 'apex': { "name": 'NVIDIA Apex', "level": 3, - "layer": 'GPU Runtimes', - "role": 'Optimization', + "layer": 'GPU Acceleration & Optimization', + "role": 'Mixed Precision', "category": 'Mixed Precision', "installer": { "type": 'pip', - "pkg": 'apex' + "pkg": 'apex', }, "launcher": { "type": 'desktop', "cmd": 'python3 -c "import apex; print(apex.__version__)"', - "default_port": None + "default_port": None, }, - "deps": ['cuda'], - "description": 'NVIDIA mixed precision and distributed training.', + "deps": [ + 'cuda', + ], + "description": 'NVIDIA mixed-precision utilities to accelerate training, optimization, and local model fine-tuning.', "license": 'Proprietary', "flags": { "has_cli": False, @@ -391,26 +504,27 @@ DEFAULT_REGISTRY: dict = { "is_ollama": False, "is_passive": True, "is_mcp": False, - "is_skills_collection": False + "is_skills_collection": False, } }, 'cuda': { "name": 'CUDA Toolkit', "level": 3, - "layer": 'GPU Runtimes', - "role": 'Acceleration', - "category": 'GPU', + "layer": 'GPU Acceleration & Optimization', + "role": 'Hardware Acceleration', + "category": 'Hardware Acceleration', "installer": { "type": 'pacman', - "pkg": 'cuda' + "pkg": 'cuda', }, "launcher": { "type": 'desktop', "cmd": 'nvcc --version', - "default_port": None + "default_port": None, }, - "deps": [], - "description": 'NVIDIA CUDA parallel computing platform.', + "deps": [ + ], + "description": 'NVIDIA parallel computing platform and SDK, enabling direct bare-metal access to physical GPU execution cores.', "license": 'Proprietary', "flags": { "has_cli": True, @@ -419,28 +533,29 @@ DEFAULT_REGISTRY: dict = { "is_ollama": False, "is_passive": True, "is_mcp": False, - "is_skills_collection": False + "is_skills_collection": False, } }, - 'heretic': { - "name": 'Heretic', - "level": 4, - "layer": 'Engines', - "role": 'Abliteration', - "category": 'Model Surgery', + 'cupy': { + "name": 'CuPy', + "level": 3, + "layer": 'GPU Acceleration & Optimization', + "role": 'GPU Computing', + "category": 'GPU Computing', "installer": { - "type": 'git', - "pkg": 'https://github.com/p-e-w/heretic', - "post_install": 'pip install -e .' + "type": 'uv', + "pkg": 'cupy-cuda12x', }, "launcher": { "type": 'desktop', - "cmd": 'python3 -c "import heretic; print(\'ok\')"', - "default_port": None + "cmd": 'python3 -c "import cupy; print(cupy.__version__)"', + "default_port": None, }, - "deps": ['cuda'], - "description": 'Fully automatic censorship/safety-alignment removal for transformer-based LLMs via optimized abliteration. Modifies model weights directly.', - "license": 'Proprietary', + "deps": [ + 'cuda', + ], + "description": 'NumPy-compatible array computing library engineered specifically for high-throughput GPU computations.', + "license": 'MIT', "flags": { "has_cli": False, "has_gui": False, @@ -448,26 +563,28 @@ DEFAULT_REGISTRY: dict = { "is_ollama": False, "is_passive": True, "is_mcp": False, - "is_skills_collection": False + "is_skills_collection": False, } }, 'unsloth': { "name": 'Unsloth', - "level": 2, - "layer": 'Development Environment', - "role": 'Optimization', - "category": 'LLM Fine-tuning', + "level": 3, + "layer": 'GPU Acceleration & Optimization', + "role": 'Model Optimization', + "category": 'Model Optimization', "installer": { "type": 'uv', - "pkg": 'unsloth' + "pkg": 'unsloth', }, "launcher": { "type": 'desktop', "cmd": 'python3 -c "import unsloth; print(\'ok\')"', - "default_port": None + "default_port": None, }, - "deps": ['cuda'], - "description": '2x faster LLM fine-tuning with 80% less memory.', + "deps": [ + 'cuda', + ], + "description": 'Advanced model training package providing 2x faster local LLM fine-tuning with 80% less physical VRAM memory.', "license": 'Proprietary', "flags": { "has_cli": False, @@ -476,29 +593,32 @@ DEFAULT_REGISTRY: dict = { "is_ollama": False, "is_passive": True, "is_mcp": False, - "is_skills_collection": False + "is_skills_collection": False, } }, - # ── L4: Inference Engines ────────────────────────────────── + # ── L4: Local Inference Engines ─────────────────────────────────── + 'airllm': { "name": 'AirLLM', "level": 4, - "layer": 'Engines', - "role": 'Engine', - "category": 'Efficient LLM', + "layer": 'Local Inference Engines', + "role": 'Layer-wise Inference', + "category": 'Layer-wise Inference', "installer": { "type": 'git', "pkg": 'https://github.com/liguodongiot/llm-airforce', - "post_install": 'python3 -m venv .venv && .venv/bin/pip install -r requirements.txt 2>/dev/null || .venv/bin/pip install -e .' + "post_install": 'python3 -m venv .venv && .venv/bin/pip install -r requirements.txt 2>/dev/null || .venv/bin/pip install -e .', }, "launcher": { "type": 'tmux', "cmd": 'cd {tools_root}/airllm && python3 -m airllm serve --port {port}', - "default_port": 8001 + "default_port": 8001, }, - "deps": ['cuda'], - "description": 'Memory-efficient 70B LLM inference on 4GB GPUs.', + "deps": [ + 'cuda', + ], + "description": 'Executes massive 70B+ model files on consumer-grade 4GB GPUs by streaming layers sequentially from NVMe SSD arrays.', "license": 'Proprietary', "flags": { "has_cli": True, @@ -507,28 +627,60 @@ DEFAULT_REGISTRY: dict = { "is_ollama": False, "is_passive": False, "is_mcp": False, - "is_skills_collection": False + "is_skills_collection": False, + } + }, + 'heretic': { + "name": 'Heretic', + "level": 4, + "layer": 'Local Inference Engines', + "role": 'Model Surgery', + "category": 'Model Surgery', + "installer": { + "type": 'git', + "pkg": 'https://github.com/p-e-w/heretic', + "post_install": 'pip install -e .', + }, + "launcher": { + "type": 'desktop', + "cmd": 'python3 -c "import heretic; print(\'ok\')"', + "default_port": None, + }, + "deps": [ + 'cuda', + ], + "description": 'Fully automatic censorship and safety-alignment removal tool via optimized abliteration of model weights.', + "license": 'Proprietary', + "flags": { + "has_cli": False, + "has_gui": False, + "has_web": False, + "is_ollama": False, + "is_passive": True, + "is_mcp": False, + "is_skills_collection": False, } }, 'koboldcpp': { "name": 'KoboldCPP', "level": 4, - "layer": 'Engines', - "role": 'Engine', - "category": 'LLM Runtime', + "layer": 'Local Inference Engines', + "role": 'GGUF Runtime', + "category": 'GGUF Runtime', "installer": { "type": 'git', "pkg": 'https://github.com/LostRuins/koboldcpp', "post_install": 'make', - "update_cmd": 'git pull --ff-only && make clean && make' + "update_cmd": 'git pull --ff-only && make clean && make', }, "launcher": { "type": 'tmux', "cmd": 'cd {tools_root}/koboldcpp && make && ./koboldcpp --port {port}', - "default_port": 5001 + "default_port": 5001, }, - "deps": [], - "description": 'GGUF-based LLM inference with CUDA/Vulkan.', + "deps": [ + ], + "description": 'GGUF-based inference runtime with a built-in user interface, supporting CUDA, OpenCL, and Vulkan backends.', "license": 'Proprietary', "flags": { "has_cli": False, @@ -537,28 +689,29 @@ DEFAULT_REGISTRY: dict = { "is_ollama": False, "is_passive": False, "is_mcp": False, - "is_skills_collection": False + "is_skills_collection": False, } }, 'llamacpp': { "name": 'llama.cpp', "level": 4, - "layer": 'Engines', - "role": 'Engine', - "category": 'LLM Runtime', + "layer": 'Local Inference Engines', + "role": 'Native Inference', + "category": 'Native Inference', "installer": { "type": 'git', "pkg": 'https://github.com/ggerganov/llama.cpp', "post_install": 'make', - "update_cmd": 'git pull --ff-only && make clean && make' + "update_cmd": 'git pull --ff-only && make clean && make', }, "launcher": { "type": 'tmux', "cmd": 'cd {tools_root}/llamacpp && make && ./server --port {port}', - "default_port": 8080 + "default_port": 8080, }, - "deps": [], - "description": "Port of Facebook's LLaMA model in C/C++.", + "deps": [ + ], + "description": 'Direct port of LLaMA models in pure C/C++, optimized for both CPU and GPU execution across multiple architectures.', "license": 'MIT', "flags": { "has_cli": True, @@ -567,27 +720,28 @@ DEFAULT_REGISTRY: dict = { "is_ollama": False, "is_passive": False, "is_mcp": False, - "is_skills_collection": False + "is_skills_collection": False, } }, 'llamafile': { "name": 'Llamafile', "level": 4, - "layer": 'Engines', - "role": 'Engine', - "category": 'Single-File LLM', + "layer": 'Local Inference Engines', + "role": 'Single-File Runtime', + "category": 'Single-File Runtime', "installer": { "type": 'script', "pkg": 'llamafile', - "cmd": 'mkdir -p {tools_root}/llamafile && curl -L -o {tools_root}/bin/llamafile https://github.com/Mozilla-Ocho/llamafile/releases/latest/download/llamafile && chmod +x {tools_root}/bin/llamafile' + "cmd": 'mkdir -p {tools_root}/llamafile && curl -L -o {tools_root}/bin/llamafile https://github.com/Mozilla-Ocho/llamafile/releases/latest/download/llamafile && chmod +x {tools_root}/bin/llamafile', }, "launcher": { "type": 'desktop', "cmd": '{tools_root}/bin/llamafile', - "default_port": None + "default_port": None, }, - "deps": [], - "description": 'Distribute and run LLMs in a single file.', + "deps": [ + ], + "description": 'Distributes and runs LLMs inside a single, cross-platform executable file with zero configuration required.', "license": 'Apache-2.0', "flags": { "has_cli": True, @@ -596,26 +750,28 @@ DEFAULT_REGISTRY: dict = { "is_ollama": False, "is_passive": False, "is_mcp": False, - "is_skills_collection": False + "is_skills_collection": False, } }, 'locally_uncensored': { "name": 'Locally-Uncensored', "level": 4, - "layer": 'Engines', - "role": 'Collection', - "category": 'Model Collection', + "layer": 'Local Inference Engines', + "role": 'Model Curation', + "category": 'Model Curation', "installer": { "type": 'git', - "pkg": 'https://github.com/nicely-done/locally-uncensored' + "pkg": 'https://github.com/nicely-done/locally-uncensored', }, "launcher": { "type": 'desktop', "cmd": 'ollama list', - "default_port": None + "default_port": None, }, - "deps": ['ollama'], - "description": 'Curated uncensored model collection and tooling.', + "deps": [ + 'ollama', + ], + "description": 'Curated collection of safety-unaligned GGUF models and terminal-based injection tools.', "license": 'Proprietary', "flags": { "has_cli": True, @@ -624,27 +780,33 @@ DEFAULT_REGISTRY: dict = { "is_ollama": False, "is_passive": True, "is_mcp": False, - "is_skills_collection": True + "is_skills_collection": True, } }, 'ollama': { "name": 'Ollama', "level": 4, - "layer": 'Engines', - "role": 'Engine', - "category": 'LLM Runtime', + "layer": 'Local Inference Engines', + "role": 'Local LLM Runner', + "category": 'Local LLM Runner', "installer": { "type": 'script', "pkg": 'ollama', - "cmd": 'curl -fsSL https://ollama.com/install.sh | sh' + "cmd": 'curl -fsSL https://ollama.com/install.sh | sh', }, "launcher": { "type": 'tmux', "cmd": 'OLLAMA_HOST=0.0.0.0:{port} OLLAMA_MODELS={models_root}/ollama ollama serve', - "default_port": 11434 + "default_port": 11434, }, - "deps": [], - "description": 'Local LLM runner and model manager.', + "deps": [ + ], + "filesystem": { + "install": 'tools/ollama', + "logs": 'logs/ollama', + "models": 'models/ollama', + }, + "description": 'Ecosystem and runner that manages model downloads, serving, and API routing through a streamlined terminal interface.', "license": 'MIT', "flags": { "has_cli": True, @@ -653,32 +815,29 @@ DEFAULT_REGISTRY: dict = { "is_ollama": True, "is_passive": False, "is_mcp": False, - "is_skills_collection": False - }, - "filesystem": { - "install": 'tools/ollama', - "logs": 'logs/ollama', - "models": 'models/ollama' + "is_skills_collection": False, } }, 'turbollm': { "name": 'TurboLLM', "level": 4, - "layer": 'Engines', - "role": 'Engine', - "category": 'LLM Runtime', + "layer": 'Local Inference Engines', + "role": 'Performance Engine', + "category": 'Performance Engine', "installer": { "type": 'git', "pkg": 'https://github.com/nicely-done/turbollm', - "post_install": 'python3 -m venv .venv && .venv/bin/pip install -r requirements.txt 2>/dev/null || .venv/bin/pip install -e .' + "post_install": 'python3 -m venv .venv && .venv/bin/pip install -r requirements.txt 2>/dev/null || .venv/bin/pip install -e .', }, "launcher": { "type": 'tmux', "cmd": 'cd {tools_root}/turbollm && python3 -m turbollm serve --port {port}', - "default_port": 8000 + "default_port": 8000, }, - "deps": ['cuda'], - "description": 'Fast LLM serving with tensor parallelism.', + "deps": [ + 'cuda', + ], + "description": 'High-speed LLM serving engine designed for raw performance utilizing native C++ and tensor parallelism.', "license": 'Proprietary', "flags": { "has_cli": True, @@ -687,69 +846,72 @@ DEFAULT_REGISTRY: dict = { "is_ollama": False, "is_passive": False, "is_mcp": False, - "is_skills_collection": False + "is_skills_collection": False, } }, - - # ── L5: Distributed Runtime ──────────────────────────────── 'vllm': { "name": 'vLLM', - "level": 5, - "layer": 'Orchestrators', - "role": 'Scaling', - "category": 'LLM Serving', + "level": 4, + "layer": 'Local Inference Engines', + "role": 'Datacenter Inference', + "category": 'Datacenter Inference', "installer": { "type": 'uv', "pkg": 'vllm', "env_overrides": { 'HF_HOME': '{base_dir}/cache/huggingface', - 'TRANSFORMERS_CACHE': '{base_dir}/cache/huggingface' - } + 'TRANSFORMERS_CACHE': '{base_dir}/cache/huggingface', + }, }, "launcher": { "type": 'tmux', "cmd": 'python -m vllm.entrypoints.openai.api_server --port {port}', - "default_port": 8000 - }, - "deps": ['cuda'], - "description": 'High-throughput and memory-efficient LLM serving.', - "license": 'Apache-2.0', - "flags": { - "has_cli": True, - "has_gui": False, - "has_web": True, - "is_ollama": False, - "is_passive": False, - "is_mcp": False, - "is_skills_collection": False + "default_port": 8000, }, + "deps": [ + 'cuda', + ], "filesystem": { "install": 'tools/vllm', "config": 'configs/vllm', "cache": 'cache/vllm', - "logs": 'logs/vllm' + "logs": 'logs/vllm', + }, + "description": 'High-throughput and memory-efficient local LLM serving engine utilizing PagedAttention to optimize GPU memory.', + "license": 'Apache-2.0', + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": True, + "is_ollama": False, + "is_passive": False, + "is_mcp": False, + "is_skills_collection": False, } }, - # ── L6: AI Endpoints ─────────────────────────────────────── + # ── L5: Intelligent API Routers & Proxies ───────────────────────── + '9router_proxy': { "name": '9Router Proxy', "level": 5, - "layer": 'Orchestrators', - "role": 'API Gateway', - "category": 'LLM Router', + "layer": 'Intelligent API Routers & Proxies', + "role": 'Load Balancer', + "category": 'Load Balancer', "installer": { "type": 'git', "pkg": 'https://github.com/nicely-done/9router', - "post_install": 'python3 -m venv .venv && .venv/bin/pip install -r requirements.txt 2>/dev/null || .venv/bin/pip install -e .' + "post_install": 'python3 -m venv .venv && .venv/bin/pip install -r requirements.txt 2>/dev/null || .venv/bin/pip install -e .', }, "launcher": { "type": 'tmux', "cmd": 'cd {tools_root}/9router && python3 main.py --port {port}', - "default_port": 4001 + "default_port": 4001, }, - "deps": ['ollama'], - "description": 'Intelligent LLM request router and load balancer.', + "deps": [ + 'ollama', + ], + "description": 'Intelligent, lightweight request router and backend balancer designed for local-first setups.', "license": 'MIT', "flags": { "has_cli": True, @@ -758,270 +920,29 @@ DEFAULT_REGISTRY: dict = { "is_ollama": False, "is_passive": False, "is_mcp": False, - "is_skills_collection": False - } - }, - 'deep_eye': { - "name": 'Deep Eye', - "level": 8, - "layer": 'User Interfaces', - "role": 'Vision', - "category": 'Computer Vision', - "installer": { - "type": 'git', - "pkg": 'https://github.com/nicely-done/deep-eye', - "post_install": 'python3 -m venv .venv && .venv/bin/pip install -r requirements.txt 2>/dev/null || .venv/bin/pip install -e .' - }, - "launcher": { - "type": 'tmux', - "cmd": 'cd {tools_root}/deep_eye && python3 serve.py --port {port}', - "default_port": 8100 - }, - "deps": ['ollama'], - "description": 'Local computer vision analysis and description engine.', - "license": 'MIT', - "flags": { - "has_cli": True, - "has_gui": False, - "has_web": True, - "is_ollama": False, - "is_passive": False, - "is_mcp": False, - "is_skills_collection": False - } - }, - 'litellm': { - "name": 'LiteLLM Proxy', - "level": 5, - "layer": 'Orchestrators', - "role": 'API Gateway', - "category": 'Proxy', - "installer": { - "type": 'uv', - "pkg": 'litellm', - "env_overrides": { - 'LITELLM_CONFIG_DIR': '{base_dir}/configs/litellm' - } - }, - "launcher": { - "type": 'tmux', - "cmd": 'litellm --port {port}', - "default_port": 4000 - }, - "deps": [], - "description": 'Call 100+ LLMs using the OpenAI format.', - "license": 'MIT', - "flags": { - "has_cli": True, - "has_gui": False, - "has_web": True, - "is_ollama": False, - "is_passive": False, - "is_mcp": False, - "is_skills_collection": False - }, - "filesystem": { - "install": 'tools/litellm', - "config": 'configs/litellm', - "logs": 'logs/litellm' - } - }, - 'luxtts': { - "name": 'LuxTTS', - "level": 8, - "layer": 'User Interfaces', - "role": 'Voice', - "category": 'Text-to-Speech', - "installer": { - "type": 'uv', - "pkg": 'luxtts' - }, - "launcher": { - "type": 'tmux', - "cmd": 'luxtts serve --port {port}', - "default_port": 8500 - }, - "deps": [], - "description": 'High-quality local text-to-speech synthesis.', - "license": 'MIT', - "flags": { - "has_cli": True, - "has_gui": False, - "has_web": True, - "is_ollama": False, - "is_passive": False, - "is_mcp": False, - "is_skills_collection": False - } - }, - - # ── L7: Data & Knowledge Pipelines ───────────────────────── - 'airweave': { - "name": 'Airweave', - "level": 10, - "layer": 'Knowledge Management', - "role": 'Integration', - "category": 'Data Sync', - "installer": { - "type": 'git', - "pkg": 'https://github.com/nicely-done/airweave', - "post_install": 'python3 -m venv .venv && .venv/bin/pip install -r requirements.txt 2>/dev/null || .venv/bin/pip install -e .' - }, - "launcher": { - "type": 'tmux', - "cmd": 'cd {tools_root}/airweave && python3 -m airweave serve --port {port}', - "default_port": 8600 - }, - "deps": [], - "description": 'Real-time data synchronization and integration layer.', - "license": 'MIT', - "flags": { - "has_cli": True, - "has_gui": False, - "has_web": True, - "is_ollama": False, - "is_passive": False, - "is_mcp": False, - "is_skills_collection": False - } - }, - 'chromadb': { - "name": 'ChromaDB', - "level": 10, - "layer": 'Knowledge Management', - "role": 'Memory / Senses', - "category": 'Vector Store', - "installer": { - "type": 'uv', - "pkg": 'chromadb' - }, - "launcher": { - "type": 'tmux', - "cmd": 'chroma run --path {models_root}/chroma --port {port}', - "default_port": 8000 - }, - "deps": [], - "description": 'AI-native open-source vector database.', - "license": 'Apache-2.0', - "flags": { - "has_cli": False, - "has_gui": False, - "has_web": True, - "is_ollama": False, - "is_passive": False, - "is_mcp": False, - "is_skills_collection": False - }, - "filesystem": { - "install": 'tools/chromadb', - "data": 'models/chroma', - "logs": 'logs/chromadb' - } - }, - 'crawl4ai': { - "name": 'Crawl4AI', - "level": 10, - "layer": 'Knowledge Management', - "role": 'Data Harvesting', - "category": 'Web Crawler', - "installer": { - "type": 'pipx', - "pkg": 'crawl4ai' - }, - "launcher": { - "type": 'desktop', - "cmd": 'crawl4ai https://example.com', - "default_port": None - }, - "deps": [], - "description": 'LLM-friendly web crawler and data extractor.', - "license": 'Proprietary', - "flags": { - "has_cli": True, - "has_gui": False, - "has_web": False, - "is_ollama": False, - "is_passive": False, - "is_mcp": False, - "is_skills_collection": False - } - }, - 'docling': { - "name": 'Docling', - "level": 10, - "layer": 'Knowledge Management', - "role": 'Memory / Senses', - "category": 'File Parsing', - "installer": { - "type": 'pipx', - "pkg": 'docling' - }, - "launcher": { - "type": 'tmux', - "cmd": 'docling', - "default_port": None - }, - "deps": [], - "description": 'Advanced document parsing and chunking.', - "license": 'MIT', - "flags": { - "has_cli": True, - "has_gui": False, - "has_web": False, - "is_ollama": False, - "is_passive": False, - "is_mcp": False, - "is_skills_collection": False - } - }, - 'elasticsearch': { - "name": 'Elasticsearch', - "level": 10, - "layer": 'Knowledge Management', - "role": 'Memory / Senses', - "category": 'Search Engine', - "installer": { - "type": 'pacman', - "pkg": 'elasticsearch' - }, - "launcher": { - "type": 'systemd', - "cmd": 'elasticsearch', - "default_port": 9200 - }, - "deps": [], - "description": 'Distributed search and analytics engine.', - "license": 'Apache-2.0', - "flags": { - "has_cli": True, - "has_gui": False, - "has_web": True, - "is_ollama": False, - "is_passive": False, - "is_mcp": False, - "is_skills_collection": False + "is_skills_collection": False, } }, 'fabric': { "name": 'Fabric', "level": 5, - "layer": 'Orchestrators', - "role": 'Curation', - "category": 'Content Pipeline', + "layer": 'Intelligent API Routers & Proxies', + "role": 'Curation Pipeline', + "category": 'Curation Pipeline', "installer": { "type": 'script', "pkg": 'fabric', - "cmd": 'curl -L https://github.com/danielmiessler/fabric/releases/latest/download/fabric-linux-amd64 > {tools_root}/bin/fabric && chmod +x {tools_root}/bin/fabric' + "cmd": 'curl -L https://github.com/danielmiessler/fabric/releases/latest/download/fabric-linux-amd64 > {tools_root}/bin/fabric && chmod +x {tools_root}/bin/fabric', }, "launcher": { "type": 'tmux', - # Fabric reads OPENAI_API_BASE / OPENAI_API_KEY for its default - # OpenAI-compatible client. Force to localhost LiteLLM proxy. "cmd": 'OPENAI_API_BASE=http://127.0.0.1:4000/v1 OPENAI_API_KEY=sk-ai-lsc-local fabric', - "default_port": None + "default_port": None, }, - "deps": ['litellm'], - "description": 'Open-source framework for augmenting humans using AI. LLM calls forced to localhost via OPENAI_API_BASE=http://127.0.0.1:4000/v1 (LiteLLM proxy) — override via the service row port if you run a different local backend.', + "deps": [ + 'litellm', + ], + "description": 'Command-line pipeline framework that curates prompt templates and pipes standard streams to local API routers.', "license": 'MIT', "flags": { "has_cli": True, @@ -1030,315 +951,35 @@ DEFAULT_REGISTRY: dict = { "is_ollama": False, "is_passive": False, "is_mcp": False, - "is_skills_collection": False + "is_skills_collection": False, } }, - 'graphrag': { - "name": 'GraphRAG', - "level": 10, - "layer": 'Knowledge Management', - "role": 'Knowledge Synthesis', - "category": 'Graph RAG', + 'litellm': { + "name": 'LiteLLM Proxy', + "level": 5, + "layer": 'Intelligent API Routers & Proxies', + "role": 'Unified API Gateway', + "category": 'Unified API Gateway', "installer": { "type": 'uv', - "pkg": 'graphrag' - }, - "launcher": { - "type": 'desktop', - "cmd": 'python3 -m graphrag init', - "default_port": None - }, - "deps": [], - "description": 'Microsoft GraphRAG for knowledge graph construction.', - "license": 'MIT', - "flags": { - "has_cli": True, - "has_gui": False, - "has_web": False, - "is_ollama": False, - "is_passive": False, - "is_mcp": False, - "is_skills_collection": False - } - }, - 'lancedb': { - "name": 'LanceDB', - "level": 10, - "layer": 'Knowledge Management', - "role": 'Memory / Senses', - "category": 'Vector Store', - "installer": { - "type": 'uv', - "pkg": 'lancedb' + "pkg": 'litellm', + "env_overrides": { + 'LITELLM_CONFIG_DIR': '{base_dir}/configs/litellm', + }, }, "launcher": { "type": 'tmux', - "cmd": 'python3 -m lancedb serve --port {port}', - "default_port": 8484 - }, - "deps": [], - "description": 'Serverless vector database for AI applications.', - "license": 'Proprietary', - "flags": { - "has_cli": True, - "has_gui": False, - "has_web": True, - "is_ollama": False, - "is_passive": False, - "is_mcp": False, - "is_skills_collection": False - } - }, - 'markitdown': { - "name": 'MarkItDown', - "level": 10, - "layer": 'Knowledge Management', - "role": 'File Parsing', - "category": 'Document Converter', - "installer": { - "type": 'pipx', - "pkg": 'markitdown' - }, - "launcher": { - "type": 'desktop', - "cmd": 'markitdown document.pdf', - "default_port": None - }, - "deps": [], - "description": 'Microsoft tool to convert files to Markdown.', - "license": 'MIT', - "flags": { - "has_cli": True, - "has_gui": False, - "has_web": False, - "is_ollama": False, - "is_passive": False, - "is_mcp": False, - "is_skills_collection": False - } - }, - 'meilisearch': { - "name": 'Meilisearch', - "level": 10, - "layer": 'Knowledge Management', - "role": 'Memory / Senses', - "category": 'Search Engine', - "installer": { - "type": 'script', - "pkg": 'meilisearch', - "cmd": "curl -L https://install.meilisearch.com | sed 's|/usr/local/bin|{tools_root}/meilisearch/bin|g' | PREFIX={tools_root}/meilisearch sh" - }, - "launcher": { - "type": 'tmux', - "cmd": 'meilisearch --port {port}', - "default_port": 7700 - }, - "deps": [], - "description": 'Fast, relevant, and typo-tolerant search engine.', - "license": 'MIT', - "flags": { - "has_cli": True, - "has_gui": False, - "has_web": True, - "is_ollama": False, - "is_passive": False, - "is_mcp": False, - "is_skills_collection": False - } - }, - 'mirofish': { - "name": 'Mirofish', - "level": 10, - "layer": 'Knowledge Management', - "role": 'Transform', - "category": 'Data Pipeline', - "installer": { - "type": 'git', - "pkg": 'https://github.com/nicely-done/mirofish' - }, - "launcher": { - "type": 'desktop', - "cmd": 'mirofish --help', - "default_port": None - }, - "deps": [], - "description": 'Data transformation and ETL pipeline framework.', - "license": 'Proprietary', - "flags": { - "has_cli": True, - "has_gui": False, - "has_web": False, - "is_ollama": False, - "is_passive": False, - "is_mcp": False, - "is_skills_collection": False - } - }, - 'neo4j': { - "name": 'Neo4j', - "level": 10, - "layer": 'Knowledge Management', - "role": 'Memory / Senses', - "category": 'Graph Database', - "installer": { - "type": 'pacman', - "pkg": 'neo4j' - }, - "launcher": { - "type": 'systemd', - "cmd": 'neo4j', - "default_port": 7474 - }, - "deps": [], - "description": 'Native graph database and knowledge graph engine.', - "license": 'Proprietary', - "flags": { - "has_cli": True, - "has_gui": False, - "has_web": True, - "is_ollama": False, - "is_passive": False, - "is_mcp": False, - "is_skills_collection": False - } - }, - 'opendataloader': { - "name": 'OpenDataLoader', - "level": 10, - "layer": 'Knowledge Management', - "role": 'Ingestion', - "category": 'Data Pipeline', - "installer": { - "type": 'git', - "pkg": 'https://github.com/nicely-done/opendataloader', - "post_install": 'python3 -m venv .venv && .venv/bin/pip install -r requirements.txt 2>/dev/null || .venv/bin/pip install -e .' - }, - "launcher": { - "type": 'desktop', - "cmd": 'python3 -m opendataloader --help', - "default_port": None - }, - "deps": [], - "description": 'Universal data loading and preprocessing pipeline.', - "license": 'MIT', - "flags": { - "has_cli": True, - "has_gui": False, - "has_web": False, - "is_ollama": False, - "is_passive": False, - "is_mcp": False, - "is_skills_collection": False - } - }, - 'opendataloader_pdf': { - "name": 'OpenDataLoader PDF', - "level": 10, - "layer": 'Knowledge Management', - "role": 'Extraction', - "category": 'PDF Pipeline', - "installer": { - "type": 'git', - "pkg": 'https://github.com/nicely-done/opendataloader-pdf' - }, - "launcher": { - "type": 'desktop', - "cmd": 'opendataloader-pdf extract file.pdf', - "default_port": None - }, - "deps": [], - "description": 'Specialized PDF extraction and data loading pipeline.', - "license": 'MIT', - "flags": { - "has_cli": True, - "has_gui": False, - "has_web": False, - "is_ollama": False, - "is_passive": False, - "is_mcp": False, - "is_skills_collection": False - } - }, - 'parakeet': { - "name": 'Parakeet.cpp', - "level": 8, - "layer": 'User Interfaces', - "role": 'Senses', - "category": 'Speech Recognition', - "installer": { - "type": 'git', - "pkg": 'https://github.com/nicely-done/parakeet.cpp', - "post_install": 'make' - }, - "launcher": { - "type": 'tmux', - "cmd": 'cd {tools_root}/parakeet && ./parakeet --port {port}', - "default_port": 8300 - }, - "deps": ['cuda'], - "description": 'C++ speech recognition with transformer architecture.', - "license": 'MIT', - "flags": { - "has_cli": True, - "has_gui": False, - "has_web": True, - "is_ollama": False, - "is_passive": False, - "is_mcp": False, - "is_skills_collection": False - } - }, - 'qdrant': { - "name": 'Qdrant', - "level": 10, - "layer": 'Knowledge Management', - "role": 'Memory / Senses', - "category": 'Vector Store', - "installer": { - "type": 'script', - "cmd": 'curl -L https://github.com/qdrant/qdrant/releases/latest/download/qdrant-x86_64-unknown-linux-musl.tar.gz | tar xz -C {tools_root}/qdrant && chmod +x {tools_root}/qdrant/qdrant' - }, - "launcher": { - "type": 'tmux', - "cmd": './qdrant --storage-path {models_root}/qdrant --host 127.0.0.1 --port {port}', - "default_port": 6333 - }, - "deps": [], - "description": 'High-performance vector database with mmap storage, payload filtering, and multi-vector support.', - "license": 'Apache-2.0', - "flags": { - "has_cli": True, - "has_gui": False, - "has_web": True, - "is_ollama": False, - "is_passive": False, - "is_mcp": False, - "is_skills_collection": False + "cmd": 'litellm --port {port}', + "default_port": 4000, }, + "deps": [ + ], "filesystem": { - "install": 'tools/qdrant', - "data": 'data/qdrant', - "logs": 'logs/qdrant' - } + "install": 'tools/litellm', + "config": 'configs/litellm', + "logs": 'logs/litellm', }, - 'turbovec': { - "name": 'TurboVec', - "level": 10, - "layer": 'Knowledge Management', - "role": 'Embedding', - "category": 'Vector Engine', - "installer": { - "type": 'git', - "pkg": 'https://github.com/nicely-done/turbovec', - "post_install": 'python3 -m venv .venv && .venv/bin/pip install -r requirements.txt 2>/dev/null || .venv/bin/pip install -e .' - }, - "launcher": { - "type": 'tmux', - "cmd": 'cd {tools_root}/turbovec && python3 serve.py --port {port}', - "default_port": 8101 - }, - "deps": ['cuda'], - "description": 'High-speed embedding generation and vector engine.', + "description": 'Multi-provider gateway that multiplexes queries, load-balances requests, and exposes all engines under a standard OpenAI API spec.', "license": 'MIT', "flags": { "has_cli": True, @@ -1347,117 +988,32 @@ DEFAULT_REGISTRY: dict = { "is_ollama": False, "is_passive": False, "is_mcp": False, - "is_skills_collection": False - } - }, - 'understand_anything': { - "name": 'Understand Anything', - "level": 10, - "layer": 'Knowledge Management', - "role": 'Comprehension', - "category": 'Document Understanding', - "installer": { - "type": 'git', - "pkg": 'https://github.com/nicely-done/understand-anything' - }, - "launcher": { - "type": 'desktop', - "cmd": 'understand-anything analyze file.pdf', - "default_port": None - }, - "deps": ['ollama'], - "description": 'Universal document understanding and summarization.', - "license": 'MIT', - "flags": { - "has_cli": True, - "has_gui": False, - "has_web": False, - "is_ollama": False, - "is_passive": False, - "is_mcp": False, - "is_skills_collection": False - } - }, - 'whisper': { - "name": 'Whisper', - "level": 10, - "layer": 'Knowledge Management', - "role": 'Memory / Senses', - "category": 'Audio Parsing', - "installer": { - "type": 'pipx', - "pkg": 'openai-whisper' - }, - "launcher": { - "type": 'tmux', - "cmd": 'whisper', - "default_port": None - }, - "deps": [], - "description": 'Robust Speech Recognition via Large-Scale Weak Supervision.', - "license": 'MIT', - "flags": { - "has_cli": True, - "has_gui": False, - "has_web": False, - "is_ollama": False, - "is_passive": False, - "is_mcp": False, - "is_skills_collection": False - }, - "filesystem": { - "install": 'tools/whisper', - "cache": 'cache/whisper' + "is_skills_collection": False, } }, - # ── L8: Automation & Execution ───────────────────────────── - 'agent_reach': { - "name": 'Agent Reach', - "level": 9, - "layer": 'DevOps', - "role": 'Discovery', - "category": 'Agent Network', - "installer": { - "type": 'git', - "pkg": 'https://github.com/nicely-done/agent-reach' - }, - "launcher": { - "type": 'desktop', - "cmd": 'agent-reach discover', - "default_port": None - }, - "deps": [], - "description": 'Multi-agent service discovery and capability mapping.', - "license": 'Proprietary', - "flags": { - "has_cli": True, - "has_gui": False, - "has_web": False, - "is_ollama": False, - "is_passive": False, - "is_mcp": False, - "is_skills_collection": False - } - }, + # ── L6: Multi-Agent Orchestration Runtimes ──────────────────────── + 'agentic_os': { "name": 'Agentic OS', - "level": 5, - "layer": 'Orchestrators', - "role": 'Hands', - "category": 'Agent OS', + "level": 6, + "layer": 'Multi-Agent Orchestration Runtimes', + "role": 'Agent Shell', + "category": 'Agent Shell', "installer": { "type": 'git', "pkg": 'https://github.com/nicely-done/agentic-os', - "post_install": 'python3 -m venv .venv && .venv/bin/pip install -r requirements.txt 2>/dev/null || .venv/bin/pip install -e .' + "post_install": 'python3 -m venv .venv && .venv/bin/pip install -r requirements.txt 2>/dev/null || .venv/bin/pip install -e .', }, "launcher": { "type": 'tmux', "cmd": 'cd {tools_root}/agentic_os && python3 main.py', - "default_port": None + "default_port": None, }, - "deps": ['ollama'], - "description": 'Autonomous agent operating system framework.', + "deps": [ + 'ollama', + ], + "description": 'Autonomous operating system wrapper providing agents with safe API blocks and filesystem boundaries.', "license": 'MIT', "flags": { "has_cli": True, @@ -1466,27 +1022,28 @@ DEFAULT_REGISTRY: dict = { "is_ollama": False, "is_passive": False, "is_mcp": False, - "is_skills_collection": False + "is_skills_collection": False, } }, 'agno': { "name": 'Agno', - "level": 5, - "layer": 'Orchestrators', - "role": 'Multi-Agent', - "category": 'Agent Framework', + "level": 6, + "layer": 'Multi-Agent Orchestration Runtimes', + "role": 'Production Multi-Agent', + "category": 'Production Multi-Agent', "installer": { "type": 'git', "pkg": 'https://github.com/agno-agi/agno', - "cmd": 'pip install -e .' + "cmd": 'pip install -e .', }, "launcher": { "type": 'desktop', "cmd": 'agno', - "default_port": None + "default_port": None, }, - "deps": [], - "description": 'Python framework for building multi-agent platforms with memory, knowledge, tools, and reasoning. Production deployment via AgentOS with tracing, scheduling, and RBAC. Originally Phidata.', + "deps": [ + ], + "description": 'Enterprise agent builder featuring persistent memory, knowledge vectors, tracing, and granular user scheduling (formerly Phidata).', "license": 'MPL-2.0', "flags": { "has_cli": True, @@ -1495,86 +1052,205 @@ DEFAULT_REGISTRY: dict = { "is_ollama": False, "is_passive": False, "is_mcp": False, - "is_skills_collection": False + "is_skills_collection": False, } }, - 'aider': { - "name": 'Aider', - "level": 9, - "layer": 'DevOps', - "role": 'Hands', - "category": 'Development', + 'autogen': { + "name": 'AutoGen', + "level": 6, + "layer": 'Multi-Agent Orchestration Runtimes', + "role": 'Multi-Agent Framework', + "category": 'Multi-Agent Framework', "installer": { "type": 'pipx', - "pkg": 'aider-chat' + "pkg": 'pyautogen', }, "launcher": { "type": 'tmux', - # Force localhost-only endpoint: route OpenAI-compatible API - # calls to the local LiteLLM proxy (default port 4000) instead - # of api.openai.com. Aider reads OPENAI_API_BASE for the - # endpoint and OPENAI_API_KEY for auth. - "cmd": 'OPENAI_API_BASE=http://127.0.0.1:4000/v1 OPENAI_API_KEY=sk-ai-lsc-local aider --model {model_arg}', - "default_port": None + "cmd": 'autogen', + "default_port": None, }, - "deps": ['ollama', 'litellm'], - "description": 'AI pair programming in your terminal. Forced to localhost via OPENAI_API_BASE=http://127.0.0.1:4000/v1 (LiteLLM proxy) — override via the service row port if you run a different local backend.', - "license": 'Apache-2.0', - "flags": { - "has_cli": True, - "has_gui": False, - "has_web": False, - "is_ollama": False, - "is_passive": False, - "is_mcp": False, - "is_skills_collection": False - } - }, - 'algory': { - "name": 'Algory', - "level": 9, - "layer": 'DevOps', - "role": 'Hands', - "category": 'Algorithm Toolkit', - "installer": { - "type": 'git', - "pkg": 'https://github.com/nicely-done/algory' - }, - "launcher": { - "type": 'desktop', - "cmd": 'algory --help', - "default_port": None - }, - "deps": [], - "description": 'Algorithm design and benchmarking toolkit.', + "deps": [ + ], + "description": 'Framework enabling next-generation LLM applications with conversable, role-playing agents.', "license": 'MIT', "flags": { "has_cli": True, "has_gui": False, "has_web": False, "is_ollama": False, - "is_passive": False, + "is_passive": True, "is_mcp": False, - "is_skills_collection": False + "is_skills_collection": False, } }, - 'atlas_os': { - "name": 'Atlas OS', - "level": 9, - "layer": 'DevOps', - "role": 'OS Integration', - "category": 'AI Operating System', + 'crewai': { + "name": 'CrewAI', + "level": 6, + "layer": 'Multi-Agent Orchestration Runtimes', + "role": 'Role-Playing Agent', + "category": 'Role-Playing Agent', + "installer": { + "type": 'pipx', + "pkg": 'crewai', + }, + "launcher": { + "type": 'tmux', + "cmd": 'crewai', + "default_port": None, + }, + "deps": [ + ], + "description": 'Orchestrates teams of specialized autonomous agents with built-in task delegation, tools, and visual loops.', + "license": 'MIT', + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False, + "is_ollama": False, + "is_passive": True, + "is_mcp": False, + "is_skills_collection": False, + } + }, + 'hermes_agent': { + "name": 'Hermes Agent', + "level": 6, + "layer": 'Multi-Agent Orchestration Runtimes', + "role": 'Agent Daemon', + "category": 'Agent Daemon', + "installer": { + "type": 'npm', + "pkg": 'hermes-agent', + }, + "launcher": { + "type": 'tmux', + "cmd": 'hermes agent --port {port}', + "default_port": 17051, + }, + "deps": [ + 'ollama', + ], + "description": 'Node.js-based autonomous agent executor designed to run long-running diagnostic scripts.', + "license": 'MIT', + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": True, + "is_ollama": False, + "is_passive": False, + "is_mcp": False, + "is_skills_collection": False, + } + }, + 'hivemind': { + "name": 'HiveMind', + "level": 6, + "layer": 'Multi-Agent Orchestration Runtimes', + "role": 'Coordination Protocol', + "category": 'Coordination Protocol', "installer": { "type": 'git', - "pkg": 'https://github.com/nicely-done/atlas-os' + "pkg": 'https://github.com/nicely-done/hivemind', + "post_install": 'python3 -m venv .venv && .venv/bin/pip install -r requirements.txt 2>/dev/null || .venv/bin/pip install -e .', + }, + "launcher": { + "type": 'tmux', + "cmd": 'cd {tools_root}/hivemind && python3 -m hivemind serve --port {port}', + "default_port": 8700, + }, + "deps": [ + 'ollama', + ], + "description": 'Distributed multi-agent coordination daemon that enables direct consensus-based task solving across local peers.', + "license": 'Proprietary', + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": True, + "is_ollama": False, + "is_passive": False, + "is_mcp": False, + "is_skills_collection": False, + } + }, + 'langchain': { + "name": 'LangChain', + "level": 6, + "layer": 'Multi-Agent Orchestration Runtimes', + "role": 'Integration Library', + "category": 'Integration Library', + "installer": { + "type": 'uv', + "pkg": 'langchain', }, "launcher": { "type": 'desktop', - "cmd": 'atlas --version', - "default_port": None + "cmd": 'python3 -c "import langchain; print(langchain.__version__)"', + "default_port": None, }, - "deps": ['ollama'], - "description": 'AI-native operating system integration layer.', + "deps": [ + ], + "description": 'Comprehensive standard library to connect language models with external APIs, databases, and structural flows.', + "license": 'MIT', + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False, + "is_ollama": False, + "is_passive": True, + "is_mcp": False, + "is_skills_collection": False, + } + }, + 'openai_swarm': { + "name": 'OpenAI Swarm', + "level": 6, + "layer": 'Multi-Agent Orchestration Runtimes', + "role": 'Stateless Orchestration', + "category": 'Stateless Orchestration', + "installer": { + "type": 'uv', + "pkg": 'swarm', + }, + "launcher": { + "type": 'desktop', + "cmd": 'python3 -c "import swarm; print(\'ok\')"', + "default_port": None, + }, + "deps": [ + ], + "description": 'Lightweight, client-side agent coordination library implementing ergonomic handoffs and direct procedural routines.', + "license": 'MIT', + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False, + "is_ollama": False, + "is_passive": True, + "is_mcp": False, + "is_skills_collection": False, + } + }, + 'synapscli': { + "name": 'SynapsCLI', + "level": 6, + "layer": 'Multi-Agent Orchestration Runtimes', + "role": 'Terminal Agent', + "category": 'Terminal Agent', + "installer": { + "type": 'git', + "pkg": 'https://github.com/HaseebKhalid1507/SynapsCLI', + "cmd": 'cargo build --release', + }, + "launcher": { + "type": 'desktop', + "cmd": 'synapscli', + "default_port": None, + }, + "deps": [ + ], + "description": 'High-performance, terminal-native agent executor written in Rust for parallel workflows and autonomous supervision.', "license": 'Proprietary', "flags": { "has_cli": True, @@ -1583,30 +1259,92 @@ DEFAULT_REGISTRY: dict = { "is_ollama": False, "is_passive": False, "is_mcp": False, - "is_skills_collection": False + "is_skills_collection": False, + } + }, + 'wayland_ai': { + "name": 'Wayland AI', + "level": 6, + "layer": 'Multi-Agent Orchestration Runtimes', + "role": 'Desktop Agent Core', + "category": 'Desktop Agent Core', + "installer": { + "type": 'git', + "pkg": 'https://github.com/ferroxlabs/wayland', + "cmd": 'npx @ferroxlabs/wayland-core', + }, + "launcher": { + "type": 'desktop', + "cmd": 'wayland', + "default_port": None, + }, + "deps": [ + ], + "description": 'Unifies Claude Code, Codex, and other assistants under a single Rust-powered local orchestration runtime.', + "license": 'Proprietary', + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False, + "is_ollama": False, + "is_passive": False, + "is_mcp": False, + "is_skills_collection": False, + } + }, + + # ── L7: Agentic Software Engineering & Sandboxes ────────────────── + + 'aider': { + "name": 'Aider', + "level": 7, + "layer": 'Agentic Software Engineering & Sandboxes', + "role": 'CLI Pair Programmer', + "category": 'CLI Pair Programmer', + "installer": { + "type": 'pipx', + "pkg": 'aider-chat', + }, + "launcher": { + "type": 'tmux', + "cmd": 'OPENAI_API_BASE=http://127.0.0.1:4000/v1 OPENAI_API_KEY=sk-ai-lsc-local aider --model {model_arg}', + "default_port": None, + }, + "deps": [ + 'ollama', + 'litellm', + ], + "description": 'Git-integrated terminal assistant designed to edit files, write commits, and solve complex refactoring tasks in-place.', + "license": 'Apache-2.0', + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False, + "is_ollama": False, + "is_passive": False, + "is_mcp": False, + "is_skills_collection": False, } }, 'claude_code': { "name": 'Claude Code', - "level": 9, - "layer": 'DevOps', - "role": 'Hands', - "category": 'Development', + "level": 7, + "layer": 'Agentic Software Engineering & Sandboxes', + "role": 'Terminal Coding Agent', + "category": 'Terminal Coding Agent', "installer": { "type": 'npm', - "pkg": '@anthropic-ai/claude-code' + "pkg": '@anthropic-ai/claude-code', }, "launcher": { "type": 'tmux', - # Force localhost-only endpoint: route Anthropic API calls to - # the local LiteLLM proxy (default port 4000) instead of - # api.anthropic.com. User can override the port via the - # service row if they run a different local proxy. "cmd": 'ANTHROPIC_BASE_URL=http://127.0.0.1:4000 ANTHROPIC_API_KEY=sk-ai-lsc-local claude', - "default_port": None + "default_port": None, }, - "deps": ['litellm'], - "description": "Anthropic's terminal assistant. Forced to localhost via ANTHROPIC_BASE_URL=http://127.0.0.1:4000 (LiteLLM proxy) — override via the service row port if you run a different local backend.", + "deps": [ + 'litellm', + ], + "description": 'Anthropic\'s terminal agent designed to execute codebase search, test diagnostics, and terminal commands natively.', "license": 'Anthropic-ToS', "flags": { "has_cli": True, @@ -1615,31 +1353,28 @@ DEFAULT_REGISTRY: dict = { "is_ollama": False, "is_passive": False, "is_mcp": False, - "is_skills_collection": False + "is_skills_collection": False, } }, 'codex': { "name": 'Codex CLI', - "level": 9, - "layer": 'DevOps', - "role": 'Hands', - "category": 'AI Coding Agent', + "level": 7, + "layer": 'Agentic Software Engineering & Sandboxes', + "role": 'Codex Developer', + "category": 'Codex Developer', "installer": { "type": 'npm', - "pkg": '@openai/codex' + "pkg": '@openai/codex', }, "launcher": { "type": 'tmux', - # Force localhost-only endpoint: route OpenAI API calls to the - # local LiteLLM proxy (default port 4000) instead of - # api.openai.com. Codex CLI reads OPENAI_BASE_URL + - # OPENAI_API_KEY env vars. User can override the port via the - # service row if they run a different local proxy. "cmd": 'OPENAI_BASE_URL=http://127.0.0.1:4000/v1 OPENAI_API_KEY=sk-ai-lsc-local codex', - "default_port": None + "default_port": None, }, - "deps": ['litellm'], - "description": 'OpenAI\'s open-source Codex CLI for terminal-based AI coding. Forced to localhost via OPENAI_BASE_URL=http://127.0.0.1:4000/v1 (LiteLLM proxy) — override via the service row port if you run a different local backend.', + "deps": [ + 'litellm', + ], + "description": 'OpenAI\'s terminal interface providing interactive code generation and terminal command synthesis.', "license": 'Apache-2.0', "flags": { "has_cli": True, @@ -1648,223 +1383,27 @@ DEFAULT_REGISTRY: dict = { "is_ollama": False, "is_passive": False, "is_mcp": False, - "is_skills_collection": False - } - }, - 'eagle_eye': { - "name": 'Eagle-Eye', - "level": 9, - "layer": 'DevOps', - "role": 'Inspector', - "category": 'Code Analysis', - "installer": { - "type": 'git', - "pkg": 'https://github.com/nicely-done/eagle-eye' - }, - "launcher": { - "type": 'desktop', - "cmd": 'eagle-eye scan .', - "default_port": None - }, - "deps": [], - "description": 'Automated code inspection and quality gate.', - "license": 'MIT', - "flags": { - "has_cli": True, - "has_gui": False, - "has_web": False, - "is_ollama": False, - "is_passive": False, - "is_mcp": False, - "is_skills_collection": False - } - }, - 'graphify': { - "name": 'Graphify', - "level": 9, - "layer": 'DevOps', - "role": 'Graph Builder', - "category": 'Knowledge Graph', - "installer": { - "type": 'git', - "pkg": 'https://github.com/nicely-done/graphify' - }, - "launcher": { - "type": 'desktop', - "cmd": 'graphify build .', - "default_port": None - }, - "deps": [], - "description": 'Codebase knowledge graph construction tool.', - "license": 'Proprietary', - "flags": { - "has_cli": True, - "has_gui": False, - "has_web": False, - "is_ollama": False, - "is_passive": False, - "is_mcp": False, - "is_skills_collection": False - } - }, - 'headroom': { - "name": 'Headroom', - "level": 9, - "layer": 'DevOps', - "role": 'Context', - "category": 'Context Manager', - "installer": { - "type": 'git', - "pkg": 'https://github.com/nicely-done/headroom' - }, - "launcher": { - "type": 'desktop', - "cmd": 'headroom scan', - "default_port": None - }, - "deps": [], - "description": 'Codebase context extraction and management.', - "license": 'Proprietary', - "flags": { - "has_cli": True, - "has_gui": False, - "has_web": False, - "is_ollama": False, - "is_passive": False, - "is_mcp": False, - "is_skills_collection": False - } - }, - 'hermes_agent': { - "name": 'Hermes Agent', - "level": 5, - "layer": 'Orchestrators', - "role": 'Agent', - "category": 'AI Agent', - "installer": { - "type": 'npm', - "pkg": 'hermes-agent' - }, - "launcher": { - "type": 'tmux', - "cmd": 'hermes agent --port {port}', - "default_port": 17051 - }, - "deps": ['ollama'], - "description": 'Hermes autonomous agent runtime.', - "license": 'MIT', - "flags": { - "has_cli": True, - "has_gui": False, - "has_web": True, - "is_ollama": False, - "is_passive": False, - "is_mcp": False, - "is_skills_collection": False - } - }, - 'hivemind': { - "name": 'HiveMind', - "level": 5, - "layer": 'Orchestrators', - "role": 'Coordination', - "category": 'Multi-Agent', - "installer": { - "type": 'git', - "pkg": 'https://github.com/nicely-done/hivemind', - "post_install": 'python3 -m venv .venv && .venv/bin/pip install -r requirements.txt 2>/dev/null || .venv/bin/pip install -e .' - }, - "launcher": { - "type": 'tmux', - "cmd": 'cd {tools_root}/hivemind && python3 -m hivemind serve --port {port}', - "default_port": 8700 - }, - "deps": ['ollama'], - "description": 'Distributed multi-agent coordination framework.', - "license": 'Proprietary', - "flags": { - "has_cli": True, - "has_gui": False, - "has_web": True, - "is_ollama": False, - "is_passive": False, - "is_mcp": False, - "is_skills_collection": False - } - }, - 'honcho': { - "name": 'Honcho', - "level": 9, - "layer": 'DevOps', - "role": 'Process Manager', - "category": 'Procfile Runner', - "installer": { - "type": 'pipx', - "pkg": 'honcho' - }, - "launcher": { - "type": 'desktop', - "cmd": 'honcho start', - "default_port": None - }, - "deps": [], - "description": 'Python Procfile manager for multi-process apps.', - "license": 'Proprietary', - "flags": { - "has_cli": True, - "has_gui": False, - "has_web": False, - "is_ollama": False, - "is_passive": False, - "is_mcp": False, - "is_skills_collection": False - } - }, - 'langchain': { - "name": 'LangChain', - "level": 5, - "layer": 'Orchestrators', - "role": 'Framework', - "category": 'LLM Framework', - "installer": { - "type": 'uv', - "pkg": 'langchain' - }, - "launcher": { - "type": 'desktop', - "cmd": 'python3 -c "import langchain; print(langchain.__version__)"', - "default_port": None - }, - "deps": [], - "description": 'Framework for LLM-powered application development.', - "license": 'MIT', - "flags": { - "has_cli": True, - "has_gui": False, - "has_web": False, - "is_ollama": False, - "is_passive": True, - "is_mcp": False, - "is_skills_collection": False + "is_skills_collection": False, } }, 'loop_engineering': { "name": 'Loop Engineering', - "level": 9, - "layer": 'DevOps', - "role": 'Hands', - "category": 'Dev Automation', + "level": 7, + "layer": 'Agentic Software Engineering & Sandboxes', + "role": 'CI/CD Orchestration', + "category": 'CI/CD Orchestration', "installer": { "type": 'git', - "pkg": 'https://github.com/nicely-done/loop-engineering' + "pkg": 'https://github.com/nicely-done/loop-engineering', }, "launcher": { "type": 'desktop', "cmd": 'loop-engineering --help', - "default_port": None + "default_port": None, }, - "deps": [], - "description": 'Development loop automation and CI/CD orchestration.', + "deps": [ + ], + "description": 'Local development loop automation daemon designed to execute test sweeps and compile targets upon file triggers.', "license": 'MIT', "flags": { "has_cli": True, @@ -1873,28 +1412,34 @@ DEFAULT_REGISTRY: dict = { "is_ollama": False, "is_passive": False, "is_mcp": False, - "is_skills_collection": False + "is_skills_collection": False, } }, 'mcp_drift_state_tracker': { "name": 'MCP Drift State Tracker', - "level": 5, - "layer": 'Orchestrators', - "role": 'Code Audit', - "category": 'MCP Server', + "level": 7, + "layer": 'Agentic Software Engineering & Sandboxes', + "role": 'Context Integrity Core', + "category": 'Context Integrity Core', "installer": { "type": 'git_node', "pkg": 'https://git.dcos.net/dcosnet/MCP-Drift-State-Tracker.git', "post_install": 'npm install && npm run build', - "update_cmd": 'git pull --ff-only && npm install && npm run build' + "update_cmd": 'git pull --ff-only && npm install && npm run build', }, "launcher": { "type": 'tmux', "cmd": 'cd {tools_root}/mcp_drift_state_tracker && node dist/index.js', - "default_port": None + "default_port": None, }, - "deps": [], - "description": 'Industrial-grade MCP server that enforces code completeness, intercepts context erosion, and neutralizes LLM laziness across multi-language repository workspaces. Pure TypeScript with JSON-driven language profiles (20+ languages).', + "deps": [ + ], + "filesystem": { + "install": 'tools/mcp_drift_state_tracker', + "config": 'configs/mcp_drift_state_tracker', + "logs": 'logs/mcp_drift_state_tracker', + }, + "description": 'TypeScript-based MCP server enforcing code completeness and neutralizing context erosion across active agent sessions.', "license": 'AGPL-3.0', "flags": { "has_cli": True, @@ -1903,163 +1448,66 @@ DEFAULT_REGISTRY: dict = { "is_ollama": False, "is_passive": True, "is_mcp": True, - "is_skills_collection": False - }, - "filesystem": { - "install": 'tools/mcp_drift_state_tracker', - "config": 'configs/mcp_drift_state_tracker', - "logs": 'logs/mcp_drift_state_tracker' - } - }, - 'n8n': { - "name": 'n8n', - "level": 5, - "layer": 'Orchestrators', - "role": 'Workflow Orchestrator', - "category": 'Workflow Automation', - "installer": { - "type": 'npm', - "pkg": 'n8n', - "env_overrides": { - 'NODE_PATH': '{tools_root}/n8n/node_modules' - } - }, - "launcher": { - "type": 'tmux', - "cmd": 'npx n8n start --port {port} --data-dir {workspaces_root}/n8n', - "default_port": 5678 - }, - "deps": [], - "description": 'Ops-oriented workflow automation for multi-step agent orchestration beyond single-turn tool calls.', - "license": 'Sustainable-Use', - "flags": { - "has_cli": True, - "has_gui": False, - "has_web": True, - "is_ollama": False, - "is_passive": False, - "is_mcp": False, - "is_skills_collection": False - }, - "filesystem": { - "install": 'tools/n8n', - "data": 'workspaces/n8n', - "logs": 'logs/n8n' - } - }, - 'nightshift': { - "name": 'NightShift', - "level": 9, - "layer": 'DevOps', - "role": 'Scheduler', - "category": 'Task Runner', - "installer": { - "type": 'git', - "pkg": 'https://github.com/nicely-done/nightshift', - "post_install": 'python3 -m venv .venv && .venv/bin/pip install -r requirements.txt 2>/dev/null || .venv/bin/pip install -e .' - }, - "launcher": { - "type": 'tmux', - "cmd": 'cd {tools_root}/nightshift && python3 -m nightshift serve --port {port}', - "default_port": 8800 - }, - "deps": [], - "description": 'Scheduled task execution and background job runner.', - "license": 'Proprietary', - "flags": { - "has_cli": True, - "has_gui": False, - "has_web": True, - "is_ollama": False, - "is_passive": False, - "is_mcp": False, - "is_skills_collection": False - } - }, - 'nvidia_agent_skills': { - "name": 'NVIDIA Agent Skills', - "level": 5, - "layer": 'Orchestrators', - "role": 'Skills Collection', - "category": 'Skills Bundle', - "installer": { - "type": 'git', - "pkg": 'https://github.com/NVIDIA/agent-skills' - }, - "launcher": { - "type": 'desktop', - "cmd": 'ls {tools_root}/nvidia_agent_skills', - "default_port": None - }, - "deps": ['cuda'], - "description": 'NVIDIA-curated agent skill definitions and tools.', - "license": 'Apache-2.0', - "flags": { - "has_cli": False, - "has_gui": False, - "has_web": False, - "is_ollama": False, - "is_passive": True, - "is_mcp": False, - "is_skills_collection": True + "is_skills_collection": False, } }, 'openhands': { "name": 'OpenHands', - "level": 9, - "layer": 'DevOps', - "role": 'Autonomous Coder', - "category": 'AI Coding Agent', + "level": 7, + "layer": 'Agentic Software Engineering & Sandboxes', + "role": 'Sovereign Software Agent', + "category": 'Sovereign Software Agent', "installer": { "type": 'git_node', "pkg": 'https://github.com/All-Hands-AI/OpenHands.git', - "update_cmd": 'git pull --ff-only && pip install -e .' + "update_cmd": 'git pull --ff-only && pip install -e .', }, "launcher": { "type": 'tmux', - # OpenHands binds its own web UI to localhost:{port}. Its LLM - # calls go through LLM_CONFIG which we force to the local - # LiteLLM proxy (default port 4000) via OPENAI_API_BASE + - # OPENAI_API_KEY env vars. OpenHands reads these on startup. "cmd": 'cd {tools_root}/openhands && OPENAI_API_BASE=http://127.0.0.1:4000/v1 OPENAI_API_KEY=sk-ai-lsc-local python -m openhands.server --port {port}', - "default_port": 3000 - }, - "deps": ['ollama', 'litellm'], - "description": 'Autonomous AI software engineer. Plans, writes, debugs, and executes code in sandboxed environments with full terminal access, file management, and web browsing. LLM calls forced to localhost via OPENAI_API_BASE=http://127.0.0.1:4000/v1 (LiteLLM proxy).', - "license": 'MIT', - "flags": { - "has_cli": True, - "has_gui": False, - "has_web": True, - "is_ollama": False, - "is_passive": False, - "is_mcp": False, - "is_skills_collection": False + "default_port": 3000, }, + "deps": [ + 'ollama', + 'litellm', + ], "filesystem": { "install": 'tools/openhands', "config": 'workspaces/openhands/config', "cache": 'cache/openhands', - "logs": 'logs/openhands' + "logs": 'logs/openhands', + }, + "description": 'Full-stack AI developer agent that plans, writes, compiles, and tests code in secure sandboxed terminal containers.', + "license": 'MIT', + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": True, + "is_ollama": False, + "is_passive": False, + "is_mcp": False, + "is_skills_collection": False, } }, 'ponytail': { "name": 'Ponytail', - "level": 9, - "layer": 'DevOps', - "role": 'Code Gen', - "category": 'Code Generation', + "level": 7, + "layer": 'Agentic Software Engineering & Sandboxes', + "role": 'Code Refactoring', + "category": 'Code Refactoring', "installer": { "type": 'git', - "pkg": 'https://github.com/nicely-done/ponytail' + "pkg": 'https://github.com/nicely-done/ponytail', }, "launcher": { "type": 'desktop', "cmd": 'ponytail generate', - "default_port": None + "default_port": None, }, - "deps": ['ollama'], - "description": 'AI-powered code generation and refactoring tool.', + "deps": [ + 'ollama', + ], + "description": 'Local-first refactoring engine designed to restructure complex directories and optimize file lengths.', "license": 'Proprietary', "flags": { "has_cli": True, @@ -2068,26 +1516,27 @@ DEFAULT_REGISTRY: dict = { "is_ollama": False, "is_passive": False, "is_mcp": False, - "is_skills_collection": False + "is_skills_collection": False, } }, 'promptops': { "name": 'PromptOps.it', - "level": 9, - "layer": 'DevOps', - "role": 'Prompt Management', - "category": 'Prompt Tooling', + "level": 7, + "layer": 'Agentic Software Engineering & Sandboxes', + "role": 'Prompt Tester', + "category": 'Prompt Tester', "installer": { "type": 'git', - "pkg": 'https://github.com/nicely-done/promptops' + "pkg": 'https://github.com/nicely-done/promptops', }, "launcher": { "type": 'desktop', "cmd": 'promptops --help', - "default_port": None + "default_port": None, }, - "deps": [], - "description": 'Prompt versioning, testing, and operations toolkit.', + "deps": [ + ], + "description": 'Version control, regression testing, and evaluation toolkit designed specifically for local prompt templates.', "license": 'Proprietary', "flags": { "has_cli": True, @@ -2096,26 +1545,27 @@ DEFAULT_REGISTRY: dict = { "is_ollama": False, "is_passive": False, "is_mcp": False, - "is_skills_collection": False + "is_skills_collection": False, } }, 'skillspector': { "name": 'Skillspector', - "level": 9, - "layer": 'DevOps', - "role": 'Analysis', - "category": 'Skill Inspection', + "level": 7, + "layer": 'Agentic Software Engineering & Sandboxes', + "role": 'Skill Auditor', + "category": 'Skill Auditor', "installer": { "type": 'git', - "pkg": 'https://github.com/nicely-done/skillspector' + "pkg": 'https://github.com/nicely-done/skillspector', }, "launcher": { "type": 'desktop', "cmd": 'skillspector inspect', - "default_port": None + "default_port": None, }, - "deps": [], - "description": 'Ollama skill definition inspector and validator.', + "deps": [ + ], + "description": 'Static analyzer designed to scan, inspect, and validate custom skills and tools exposed to local agents.', "license": 'Proprietary', "flags": { "has_cli": True, @@ -2124,26 +1574,27 @@ DEFAULT_REGISTRY: dict = { "is_ollama": False, "is_passive": False, "is_mcp": False, - "is_skills_collection": False + "is_skills_collection": False, } }, 'spec_kit': { "name": 'Spec Kit', - "level": 9, - "layer": 'DevOps', - "role": 'Documentation', - "category": 'Spec Writer', + "level": 7, + "layer": 'Agentic Software Engineering & Sandboxes', + "role": 'Requirement Builder', + "category": 'Requirement Builder', "installer": { "type": 'git', - "pkg": 'https://github.com/nicely-done/spec-kit' + "pkg": 'https://github.com/nicely-done/spec-kit', }, "launcher": { "type": 'desktop', "cmd": 'spec-kit init', - "default_port": None + "default_port": None, }, - "deps": [], - "description": 'Automated specification and requirement document generator.', + "deps": [ + ], + "description": 'Automated architectural specification writer that builds code blueprints based on raw developer prompts.', "license": 'Proprietary', "flags": { "has_cli": True, @@ -2152,87 +1603,36 @@ DEFAULT_REGISTRY: dict = { "is_ollama": False, "is_passive": False, "is_mcp": False, - "is_skills_collection": False - } - }, - 'synapscli': { - "name": 'SynapsCLI', - "level": 5, - "layer": 'Orchestrators', - "role": 'Agent Runtime', - "category": 'AI Agent', - "installer": { - "type": 'git', - "pkg": 'https://github.com/HaseebKhalid1507/SynapsCLI', - "cmd": 'cargo build --release' - }, - "launcher": { - "type": 'desktop', - "cmd": 'synapscli', - "default_port": None - }, - "deps": [], - "description": 'High-performance terminal-native AI agent runtime in Rust. Interactive LLM chat, parallel agent orchestration, and autonomous supervision.', - "license": 'Proprietary', - "flags": { - "has_cli": True, - "has_gui": False, - "has_web": False, - "is_ollama": False, - "is_passive": False, - "is_mcp": False, - "is_skills_collection": False - } - }, - 'wayland_ai': { - "name": 'Wayland AI', - "level": 5, - "layer": 'Orchestrators', - "role": 'Agent Orchestrator', - "category": 'AI Agent', - "installer": { - "type": 'git', - "pkg": 'https://github.com/ferroxlabs/wayland', - "cmd": 'npx @ferroxlabs/wayland-core' - }, - "launcher": { - "type": 'desktop', - "cmd": 'wayland', - "default_port": None - }, - "deps": [], - "description": 'Local-first desktop AI agent that unifies Claude Code, Codex, Gemini, Qwen, and 12+ coding assistants under a single Rust-powered orchestration engine. MCP-native, sandboxed tool execution.', - "license": 'Proprietary', - "flags": { - "has_cli": True, - "has_gui": False, - "has_web": False, - "is_ollama": False, - "is_passive": False, - "is_mcp": False, - "is_skills_collection": False + "is_skills_collection": False, } }, - # ── L9: Observability ────────────────────────────────────── - 'glances': { - "name": 'Glances', - "level": 7, - "layer": 'Observability', - "role": 'Dashboard', - "category": 'Metrics', + # ── L8: Decentralized Knowledge & Vector Stores ─────────────────── + + 'chromadb': { + "name": 'ChromaDB', + "level": 8, + "layer": 'Decentralized Knowledge & Vector Stores', + "role": 'Vector Engine', + "category": 'Vector Engine', "installer": { - "type": 'pacman', - "pkg": 'glances' + "type": 'uv', + "pkg": 'chromadb', }, "launcher": { "type": 'tmux', - "cmd": 'glances -w --port {port}', - "default_port": 61208 + "cmd": 'chroma run --path {models_root}/chroma --port {port}', + "default_port": 8000, }, - "deps": [], - "description": 'Cross-platform system monitoring tool.', - "license": 'LGPL-3.0', + "deps": [ + ], + "filesystem": { + "install": 'tools/chromadb', + "data": 'models/chroma', + "logs": 'logs/chromadb', + }, + "description": 'AI-native vector database optimized for embedded indexing, structured search, and agent memory caching.', + "license": 'Apache-2.0', "flags": { "has_cli": False, "has_gui": False, @@ -2240,56 +1640,116 @@ DEFAULT_REGISTRY: dict = { "is_ollama": False, "is_passive": False, "is_mcp": False, - "is_skills_collection": False + "is_skills_collection": False, } }, - 'grafana': { - "name": 'Grafana', - "level": 7, - "layer": 'Observability', - "role": 'Dashboard', - "category": 'Visualization', + 'elasticsearch': { + "name": 'Elasticsearch', + "level": 8, + "layer": 'Decentralized Knowledge & Vector Stores', + "role": 'Distributed Search', + "category": 'Distributed Search', "installer": { "type": 'pacman', - "pkg": 'grafana' + "pkg": 'elasticsearch', }, "launcher": { "type": 'systemd', - "cmd": 'grafana-server', - "default_port": 3000 + "cmd": 'elasticsearch', + "default_port": 9200, }, - "deps": [], - "description": 'Multi-source observability dashboards and visualization.', - "license": 'AGPL-3.0', + "deps": [ + ], + "description": 'Distributed search and analytics engine for lexical queries, BM25 matches, and hybrid search pipelines.', + "license": 'Apache-2.0', "flags": { - "has_cli": False, + "has_cli": True, "has_gui": False, "has_web": True, "is_ollama": False, "is_passive": False, "is_mcp": False, - "is_skills_collection": False + "is_skills_collection": False, } }, - 'grafana_alloy': { - "name": 'Grafana Alloy', - "level": 7, - "layer": 'Observability', - "role": 'Collector', - "category": 'Telemetry', + 'graphrag': { + "name": 'GraphRAG', + "level": 8, + "layer": 'Decentralized Knowledge & Vector Stores', + "role": 'Structured Synthesis', + "category": 'Structured Synthesis', + "installer": { + "type": 'uv', + "pkg": 'graphrag', + }, + "launcher": { + "type": 'desktop', + "cmd": 'python3 -m graphrag init', + "default_port": None, + }, + "deps": [ + ], + "description": 'Microsoft\'s graph-based retrieval augmented generation system, converting raw text dumps into conceptual maps.', + "license": 'MIT', + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False, + "is_ollama": False, + "is_passive": False, + "is_mcp": False, + "is_skills_collection": False, + } + }, + 'lancedb': { + "name": 'LanceDB', + "level": 8, + "layer": 'Decentralized Knowledge & Vector Stores', + "role": 'Serverless Database', + "category": 'Serverless Database', + "installer": { + "type": 'uv', + "pkg": 'lancedb', + }, + "launcher": { + "type": 'tmux', + "cmd": 'python3 -m lancedb serve --port {port}', + "default_port": 8484, + }, + "deps": [ + ], + "description": 'Serverless vector store designed for fast, memory-mapped query execution and local disk offloading.', + "license": 'Proprietary', + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": True, + "is_ollama": False, + "is_passive": False, + "is_mcp": False, + "is_skills_collection": False, + } + }, + 'meilisearch': { + "name": 'Meilisearch', + "level": 8, + "layer": 'Decentralized Knowledge & Vector Stores', + "role": 'Lexical Search', + "category": 'Lexical Search', "installer": { "type": 'script', - "pkg": 'grafana/alloy', - "cmd": 'mkdir -p {tools_root}/grafana_alloy/bin && curl -fsSL -o {tools_root}/grafana_alloy/bin/alloy https://github.com/grafana/alloy/releases/latest/download/alloy-linux-amd64 && chmod +x {tools_root}/grafana_alloy/bin/alloy' + "pkg": 'meilisearch', + "cmd": 'curl -L https://install.meilisearch.com | sed \'s|/usr/local/bin|{tools_root}/meilisearch/bin|g\' | PREFIX={tools_root}/meilisearch sh', }, "launcher": { "type": 'tmux', - "cmd": 'alloy run --server.http.listen-port={port}', - "default_port": 12345 + "cmd": 'meilisearch --port {port}', + "default_port": 7700, }, - "deps": ['prometheus'], - "description": 'OpenTelemetry collector with Prometheus integration.', - "license": 'Apache-2.0', + "deps": [ + ], + "description": 'Blazing fast, relevant, and typo-tolerant search engine designed to serve local codebase indexing.', + "license": 'MIT', "flags": { "has_cli": True, "has_gui": False, @@ -2297,111 +1757,61 @@ DEFAULT_REGISTRY: dict = { "is_ollama": False, "is_passive": False, "is_mcp": False, - "is_skills_collection": False + "is_skills_collection": False, } }, - 'hermes_dashboard_page': { - "name": 'Hermes Dashboard', + 'neo4j': { + "name": 'Neo4j', "level": 8, - "layer": 'User Interfaces', - "role": 'Dashboard', - "category": 'Ecosystem Dashboard', - "installer": { - "type": 'npm', - "pkg": 'hermes-dashboard' - }, - "launcher": { - "type": 'tmux', - "cmd": 'hermes dashboard --port {port}', - "default_port": 17050 - }, - "deps": ['ollama'], - "description": 'Hermes ecosystem monitoring dashboard.', - "license": 'Proprietary', - "flags": { - "has_cli": False, - "has_gui": False, - "has_web": True, - "is_ollama": False, - "is_passive": False, - "is_mcp": False, - "is_skills_collection": False - } - }, - 'latitude': { - "name": 'Latitude', - "level": 7, - "layer": 'Observability', - "role": 'Evaluation', - "category": 'LLM Evaluation', - "installer": { - "type": 'git', - "pkg": 'https://github.com/nicely-done/latitude', - "post_install": 'python3 -m venv .venv && .venv/bin/pip install -r requirements.txt 2>/dev/null || .venv/bin/pip install -e .' - }, - "launcher": { - "type": 'tmux', - "cmd": 'cd {tools_root}/latitude && python3 -m latitude serve --port {port}', - "default_port": 9300 - }, - "deps": ['ollama'], - "description": 'LLM output evaluation and benchmarking platform.', - "license": 'Proprietary', - "flags": { - "has_cli": True, - "has_gui": False, - "has_web": True, - "is_ollama": False, - "is_passive": False, - "is_mcp": False, - "is_skills_collection": False - } - }, - 'opik': { - "name": 'Opik', - "level": 7, - "layer": 'Observability', - "role": 'LLM Tracing', - "category": 'AI Observability', - "installer": { - "type": 'uv', - "pkg": 'opik' - }, - "launcher": { - "type": 'tmux', - "cmd": 'opik serve --port {port}', - "default_port": 3000 - }, - "deps": [], - "description": 'Open-source LLM observability and tracing platform.', - "license": 'Proprietary', - "flags": { - "has_cli": True, - "has_gui": False, - "has_web": True, - "is_ollama": False, - "is_passive": False, - "is_mcp": False, - "is_skills_collection": False - } - }, - 'prometheus': { - "name": 'Prometheus', - "level": 7, - "layer": 'Observability', - "role": 'Metrics Collector', - "category": 'Metrics', + "layer": 'Decentralized Knowledge & Vector Stores', + "role": 'Graph Database', + "category": 'Graph Database', "installer": { "type": 'pacman', - "pkg": 'prometheus' + "pkg": 'neo4j', }, "launcher": { "type": 'systemd', - "cmd": 'prometheus', - "default_port": 9090 + "cmd": 'neo4j', + "default_port": 7474, }, - "deps": [], - "description": 'Open-source monitoring and alerting toolkit.', + "deps": [ + ], + "description": 'Native graph database server providing agent reasoning engines with high-speed relationship mapping and traversal.', + "license": 'Proprietary', + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": True, + "is_ollama": False, + "is_passive": False, + "is_mcp": False, + "is_skills_collection": False, + } + }, + 'qdrant': { + "name": 'Qdrant', + "level": 8, + "layer": 'Decentralized Knowledge & Vector Stores', + "role": 'High-Performance Vector', + "category": 'High-Performance Vector', + "installer": { + "type": 'script', + "cmd": 'curl -L https://github.com/qdrant/qdrant/releases/latest/download/qdrant-x86_64-unknown-linux-musl.tar.gz | tar xz -C {tools_root}/qdrant && chmod +x {tools_root}/qdrant/qdrant', + }, + "launcher": { + "type": 'tmux', + "cmd": './qdrant --storage-path {models_root}/qdrant --host 127.0.0.1 --port {port}', + "default_port": 6333, + }, + "deps": [ + ], + "filesystem": { + "install": 'tools/qdrant', + "data": 'data/qdrant', + "logs": 'logs/qdrant', + }, + "description": 'Rust-powered vector database with native mmap support, complex payload filtering, and sub-millisecond similarity search.', "license": 'Apache-2.0', "flags": { "has_cli": True, @@ -2410,262 +1820,91 @@ DEFAULT_REGISTRY: dict = { "is_ollama": False, "is_passive": False, "is_mcp": False, - "is_skills_collection": False - } - }, - 'pulse_ai': { - "name": 'Pulse AI', - "level": 7, - "layer": 'Observability', - "role": 'Health Monitor', - "category": 'AI Monitoring', - "installer": { - "type": 'git', - "pkg": 'https://github.com/nicely-done/pulse-ai', - "post_install": 'python3 -m venv .venv && .venv/bin/pip install -r requirements.txt 2>/dev/null || .venv/bin/pip install -e .' - }, - "launcher": { - "type": 'tmux', - "cmd": 'cd {tools_root}/pulse_ai && python3 -m pulse serve --port {port}', - "default_port": 8900 - }, - "deps": [], - "description": 'AI service health monitoring and auto-recovery.', - "license": 'Proprietary', - "flags": { - "has_cli": True, - "has_gui": False, - "has_web": True, - "is_ollama": False, - "is_passive": False, - "is_mcp": False, - "is_skills_collection": False + "is_skills_collection": False, } }, - # ── L10: Intelligent Routing ─────────────────────────────── - 'autogen': { - "name": 'AutoGen', - "level": 5, - "layer": 'Orchestrators', - "role": 'Brain', - "category": 'Agent Workflow', + # ── L9: Data Extraction & Pipeline Harvest ──────────────────────── + + 'airweave': { + "name": 'Airweave', + "level": 9, + "layer": 'Data Extraction & Pipeline Harvest', + "role": 'Synchronization Layer', + "category": 'Synchronization Layer', + "installer": { + "type": 'git', + "pkg": 'https://github.com/nicely-done/airweave', + "post_install": 'python3 -m venv .venv && .venv/bin/pip install -r requirements.txt 2>/dev/null || .venv/bin/pip install -e .', + }, + "launcher": { + "type": 'tmux', + "cmd": 'cd {tools_root}/airweave && python3 -m airweave serve --port {port}', + "default_port": 8600, + }, + "deps": [ + ], + "description": 'Real-time synchronization and integration manager connecting local databases directly with active model pipelines.', + "license": 'MIT', + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": True, + "is_ollama": False, + "is_passive": False, + "is_mcp": False, + "is_skills_collection": False, + } + }, + 'crawl4ai': { + "name": 'Crawl4AI', + "level": 9, + "layer": 'Data Extraction & Pipeline Harvest', + "role": 'Web Scraper', + "category": 'Web Scraper', "installer": { "type": 'pipx', - "pkg": 'pyautogen' - }, - "launcher": { - "type": 'tmux', - "cmd": 'autogen', - "default_port": None - }, - "deps": [], - "description": 'Enable next-gen LLM applications with multiple conversable agents.', - "license": 'MIT', - "flags": { - "has_cli": True, - "has_gui": False, - "has_web": False, - "is_ollama": False, - "is_passive": True, - "is_mcp": False, - "is_skills_collection": False - } - }, - 'crewai': { - "name": 'CrewAI', - "level": 5, - "layer": 'Orchestrators', - "role": 'Brain', - "category": 'Agent Workflow', - "installer": { - "type": 'pipx', - "pkg": 'crewai' - }, - "launcher": { - "type": 'tmux', - "cmd": 'crewai', - "default_port": None - }, - "deps": [], - "description": 'Framework for orchestrating role-playing autonomous AI agents.', - "license": 'MIT', - "flags": { - "has_cli": True, - "has_gui": False, - "has_web": False, - "is_ollama": False, - "is_passive": True, - "is_mcp": False, - "is_skills_collection": False - } - }, - 'everos_memory': { - "name": 'EverOS Memory', - "level": 10, - "layer": 'Knowledge Management', - "role": 'Memory', - "category": 'Persistent Memory', - "installer": { - "type": 'git', - "pkg": 'https://github.com/nicely-done/everos-memory', - "post_install": 'python3 -m venv .venv && .venv/bin/pip install -r requirements.txt 2>/dev/null || .venv/bin/pip install -e .' - }, - "launcher": { - "type": 'tmux', - "cmd": 'cd {tools_root}/everos_memory && python3 -m everos serve --port {port}', - "default_port": 9200 - }, - "deps": [], - "description": 'Persistent long-term memory system for AI agents.', - "license": 'Proprietary', - "flags": { - "has_cli": True, - "has_gui": False, - "has_web": True, - "is_ollama": False, - "is_passive": False, - "is_mcp": False, - "is_skills_collection": False - } - }, - 'glassmind': { - "name": 'GlassMind', - "level": 5, - "layer": 'Orchestrators', - "role": 'Reasoning', - "category": 'Reasoning Engine', - "installer": { - "type": 'git', - "pkg": 'https://github.com/nicely-done/glassmind', - "post_install": 'python3 -m venv .venv && .venv/bin/pip install -r requirements.txt 2>/dev/null || .venv/bin/pip install -e .' - }, - "launcher": { - "type": 'tmux', - "cmd": 'cd {tools_root}/glassmind && python3 -m glassmind serve --port {port}', - "default_port": 9400 - }, - "deps": ['ollama'], - "description": 'Transparent reasoning and chain-of-thought engine.', - "license": 'Proprietary', - "flags": { - "has_cli": True, - "has_gui": False, - "has_web": True, - "is_ollama": False, - "is_passive": False, - "is_mcp": False, - "is_skills_collection": False - } - }, - 'mnemo_cortex': { - "name": 'Mnemo Cortex', - "level": 10, - "layer": 'Knowledge Management', - "role": 'Memory', - "category": 'Cortex Memory', - "installer": { - "type": 'git', - "pkg": 'https://github.com/nicely-done/mnemo-cortex', - "post_install": 'python3 -m venv .venv && .venv/bin/pip install -r requirements.txt 2>/dev/null || .venv/bin/pip install -e .' - }, - "launcher": { - "type": 'tmux', - "cmd": 'cd {tools_root}/mnemo_cortex && python3 -m mnemo_cortex serve --port {port}', - "default_port": 7200 - }, - "deps": ['ollama'], - "description": 'Hierarchical cortex memory for AI agents.', - "license": 'MIT', - "flags": { - "has_cli": True, - "has_gui": False, - "has_web": True, - "is_ollama": False, - "is_passive": False, - "is_mcp": False, - "is_skills_collection": False - } - }, - 'odysseus': { - "name": 'Odysseus', - "level": 5, - "layer": 'Orchestrators', - "role": 'Reasoning', - "category": 'Reasoning Engine', - "installer": { - "type": 'pip', - "pkg": 'odysseus' - }, - "launcher": { - "type": 'tmux', - "cmd": 'cd {tools_root}/odysseus/ && ./.venv/bin/uvicorn app:app --host 127.0.0.1 --port {port}', - "default_port": 7000 - }, - "deps": ['ollama'], - "description": 'Local reasoning and orchestration agent.', - "license": 'MIT', - "flags": { - "has_cli": False, - "has_gui": False, - "has_web": True, - "is_ollama": False, - "is_passive": False, - "is_mcp": False, - "is_skills_collection": False - }, - "filesystem": { - "install": 'tools/odysseus', - "config": 'configs/odysseus', - "logs": 'logs/odysseus' - } - }, - 'openai_swarm': { - "name": 'OpenAI Swarm', - "level": 5, - "layer": 'Orchestrators', - "role": 'Multi-Agent', - "category": 'Agent Framework', - "installer": { - "type": 'uv', - "pkg": 'swarm' + "pkg": 'crawl4ai', }, "launcher": { "type": 'desktop', - "cmd": 'python3 -c "import swarm; print(\'ok\')"', - "default_port": None + "cmd": 'crawl4ai https://example.com', + "default_port": None, }, - "deps": [], - "description": 'OpenAI multi-agent orchestration framework.', - "license": 'MIT', + "deps": [ + ], + "description": 'LLM-friendly crawler designed to clean markup, extract structural markdown, and feed clean context to agent loops.', + "license": 'Proprietary', "flags": { "has_cli": True, "has_gui": False, "has_web": False, "is_ollama": False, - "is_passive": True, + "is_passive": False, "is_mcp": False, - "is_skills_collection": False + "is_skills_collection": False, } }, - 'openbrain': { - "name": 'OpenBrain', - "level": 5, - "layer": 'Orchestrators', - "role": 'Brain', - "category": 'Reasoning Engine', + 'deep_eye': { + "name": 'Deep Eye', + "level": 9, + "layer": 'Data Extraction & Pipeline Harvest', + "role": 'Vision describer', + "category": 'Vision describer', "installer": { "type": 'git', - "pkg": 'https://github.com/nicely-done/openbrain', - "post_install": 'python3 -m venv .venv && .venv/bin/pip install -r requirements.txt 2>/dev/null || .venv/bin/pip install -e .' + "pkg": 'https://github.com/nicely-done/deep-eye', + "post_install": 'python3 -m venv .venv && .venv/bin/pip install -r requirements.txt 2>/dev/null || .venv/bin/pip install -e .', }, "launcher": { "type": 'tmux', - "cmd": 'cd {tools_root}/openbrain && python3 -m openbrain serve --port {port}', - "default_port": 7100 + "cmd": 'cd {tools_root}/deep_eye && python3 serve.py --port {port}', + "default_port": 8100, }, - "deps": ['ollama'], - "description": 'Open-source reasoning and cognitive engine.', + "deps": [ + 'ollama', + ], + "description": 'Local computer vision analysis engine designed to monitor webcams or video inputs offline and provide descriptive captions.', "license": 'MIT', "flags": { "has_cli": True, @@ -2674,29 +1913,335 @@ DEFAULT_REGISTRY: dict = { "is_ollama": False, "is_passive": False, "is_mcp": False, - "is_skills_collection": False + "is_skills_collection": False, + } + }, + 'docling': { + "name": 'Docling', + "level": 9, + "layer": 'Data Extraction & Pipeline Harvest', + "role": 'Document Parser', + "category": 'Document Parser', + "installer": { + "type": 'pipx', + "pkg": 'docling', + }, + "launcher": { + "type": 'tmux', + "cmd": 'docling', + "default_port": None, + }, + "deps": [ + ], + "description": 'Advanced multi-format document parser, converting complex PDFs, docx, and sheets into highly clean chunked text.', + "license": 'MIT', + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False, + "is_ollama": False, + "is_passive": False, + "is_mcp": False, + "is_skills_collection": False, + } + }, + 'luxtts': { + "name": 'LuxTTS', + "level": 9, + "layer": 'Data Extraction & Pipeline Harvest', + "role": 'Voice Synthesis', + "category": 'Voice Synthesis', + "installer": { + "type": 'uv', + "pkg": 'luxtts', + }, + "launcher": { + "type": 'tmux', + "cmd": 'luxtts serve --port {port}', + "default_port": 8500, + }, + "deps": [ + ], + "description": 'High-fidelity, local text-to-speech synthesis daemon creating standard voice outputs for interactive interfaces.', + "license": 'MIT', + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": True, + "is_ollama": False, + "is_passive": False, + "is_mcp": False, + "is_skills_collection": False, + } + }, + 'markitdown': { + "name": 'MarkItDown', + "level": 9, + "layer": 'Data Extraction & Pipeline Harvest', + "role": 'Markdown Converter', + "category": 'Markdown Converter', + "installer": { + "type": 'pipx', + "pkg": 'markitdown', + }, + "launcher": { + "type": 'desktop', + "cmd": 'markitdown document.pdf', + "default_port": None, + }, + "deps": [ + ], + "description": 'Microsoft command-line tool designed to convert miscellaneous office documents and files to standard markdown in-place.', + "license": 'MIT', + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False, + "is_ollama": False, + "is_passive": False, + "is_mcp": False, + "is_skills_collection": False, + } + }, + 'mirofish': { + "name": 'Mirofish', + "level": 9, + "layer": 'Data Extraction & Pipeline Harvest', + "role": 'ETL Transformation', + "category": 'ETL Transformation', + "installer": { + "type": 'git', + "pkg": 'https://github.com/nicely-done/mirofish', + }, + "launcher": { + "type": 'desktop', + "cmd": 'mirofish --help', + "default_port": None, + }, + "deps": [ + ], + "description": 'Data transformation and ETL framework designed to convert database rows into clean training or RAG arrays.', + "license": 'Proprietary', + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False, + "is_ollama": False, + "is_passive": False, + "is_mcp": False, + "is_skills_collection": False, + } + }, + 'opendataloader': { + "name": 'OpenDataLoader', + "level": 9, + "layer": 'Data Extraction & Pipeline Harvest', + "role": 'Data Ingest', + "category": 'Data Ingest', + "installer": { + "type": 'git', + "pkg": 'https://github.com/nicely-done/opendataloader', + "post_install": 'python3 -m venv .venv && .venv/bin/pip install -r requirements.txt 2>/dev/null || .venv/bin/pip install -e .', + }, + "launcher": { + "type": 'desktop', + "cmd": 'python3 -m opendataloader --help', + "default_port": None, + }, + "deps": [ + ], + "description": 'Universal data loading and pre-processing pipeline for automated file format normalization.', + "license": 'MIT', + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False, + "is_ollama": False, + "is_passive": False, + "is_mcp": False, + "is_skills_collection": False, + } + }, + 'opendataloader_pdf': { + "name": 'OpenDataLoader PDF', + "level": 9, + "layer": 'Data Extraction & Pipeline Harvest', + "role": 'PDF Processing', + "category": 'PDF Processing', + "installer": { + "type": 'git', + "pkg": 'https://github.com/nicely-done/opendataloader-pdf', + }, + "launcher": { + "type": 'desktop', + "cmd": 'opendataloader-pdf extract file.pdf', + "default_port": None, + }, + "deps": [ + ], + "description": 'Specialized OCR and text extraction pipeline designed specifically to process high-resolution scanned layout PDF files.', + "license": 'MIT', + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False, + "is_ollama": False, + "is_passive": False, + "is_mcp": False, + "is_skills_collection": False, + } + }, + 'parakeet': { + "name": 'Parakeet.cpp', + "level": 9, + "layer": 'Data Extraction & Pipeline Harvest', + "role": 'Speech Transcriber', + "category": 'Speech Transcriber', + "installer": { + "type": 'git', + "pkg": 'https://github.com/nicely-done/parakeet.cpp', + "post_install": 'make', + }, + "launcher": { + "type": 'tmux', + "cmd": 'cd {tools_root}/parakeet && ./parakeet --port {port}', + "default_port": 8300, + }, + "deps": [ + 'cuda', + ], + "description": 'High-speed C++ speech recognition client utilizing optimized Transformer architectures for direct hardware running.', + "license": 'MIT', + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": True, + "is_ollama": False, + "is_passive": False, + "is_mcp": False, + "is_skills_collection": False, + } + }, + 'understand_anything': { + "name": 'Understand Anything', + "level": 9, + "layer": 'Data Extraction & Pipeline Harvest', + "role": 'Document Comprehension', + "category": 'Document Comprehension', + "installer": { + "type": 'git', + "pkg": 'https://github.com/nicely-done/understand-anything', + }, + "launcher": { + "type": 'desktop', + "cmd": 'understand-anything analyze file.pdf', + "default_port": None, + }, + "deps": [ + 'ollama', + ], + "description": 'Document semantic summarization tool designed to pre-process large files and generate abstract files for agent caches.', + "license": 'MIT', + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False, + "is_ollama": False, + "is_passive": False, + "is_mcp": False, + "is_skills_collection": False, + } + }, + 'whisper': { + "name": 'Whisper', + "level": 9, + "layer": 'Data Extraction & Pipeline Harvest', + "role": 'Audio Extraction', + "category": 'Audio Extraction', + "installer": { + "type": 'pipx', + "pkg": 'openai-whisper', + }, + "launcher": { + "type": 'tmux', + "cmd": 'whisper', + "default_port": None, + }, + "deps": [ + ], + "filesystem": { + "install": 'tools/whisper', + "cache": 'cache/whisper', + }, + "description": 'Robust speech-to-text transcription engine running locally to ingest and index audio media tracks.', + "license": 'MIT', + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False, + "is_ollama": False, + "is_passive": False, + "is_mcp": False, + "is_skills_collection": False, } }, - # ── L11: User Interfaces ─────────────────────────────────── + # ── L10: Human Interface & System Operations ────────────────────── + + 'ansible': { + "name": 'Ansible', + "level": 10, + "layer": 'Human Interface & System Operations', + "role": 'Agentless Deployment', + "category": 'Agentless Deployment', + "installer": { + "type": 'pacman', + "pkg": 'ansible', + }, + "launcher": { + "type": 'desktop', + "cmd": 'ansible --version', + "default_port": None, + }, + "deps": [ + ], + "description": 'Agentless configuration management and automation orchestrating systems files across SSH links.', + "license": 'GPL-3.0', + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False, + "is_ollama": False, + "is_passive": False, + "is_mcp": False, + "is_skills_collection": False, + } + }, 'anythingllm': { "name": 'AnythingLLM', - "level": 8, - "layer": 'User Interfaces', - "role": 'Face', - "category": 'Chat', + "level": 10, + "layer": 'Human Interface & System Operations', + "role": 'Collaborative Chat', + "category": 'Collaborative Chat', "installer": { "type": 'git_node', "pkg": 'https://github.com/Mintplex-Labs/anything-llm.git', - "update_cmd": 'git pull --ff-only && yarn install' + "update_cmd": 'git pull --ff-only && yarn install', }, "launcher": { "type": 'tmux', "cmd": 'cd {tools_root}/anythingllm && yarn dev', - "default_port": 3001 + "default_port": 3001, }, - "deps": [], - "description": 'Full-stack application for conversational AI.', + "deps": [ + ], + "filesystem": { + "install": 'tools/anythingllm', + "config": 'configs/anythingllm', + "data": 'data/anythingllm', + "logs": 'logs/anythingllm', + }, + "description": 'Workspace-based desktop chat platform with built-in RAG parsers and security locks.', "license": 'MIT', "flags": { "has_cli": False, @@ -2705,32 +2250,143 @@ DEFAULT_REGISTRY: dict = { "is_ollama": False, "is_passive": False, "is_mcp": False, - "is_skills_collection": False + "is_skills_collection": False, + } }, - "filesystem": { - "install": 'tools/anythingllm', - "config": 'configs/anythingllm', - "data": 'data/anythingllm', - "logs": 'logs/anythingllm' + 'aws_cdk': { + "name": 'AWS CDK', + "level": 10, + "layer": 'Human Interface & System Operations', + "role": 'Cloud Dev Kit', + "category": 'Cloud Dev Kit', + "installer": { + "type": 'npm', + "pkg": 'aws-cdk', + }, + "launcher": { + "type": 'desktop', + "cmd": 'cdk --version', + "default_port": None, + }, + "deps": [ + ], + "description": 'Defines local target groups and infrastructure profiles using standard TypeScript templates.', + "license": 'Apache-2.0', + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False, + "is_ollama": False, + "is_passive": False, + "is_mcp": False, + "is_skills_collection": False, + } + }, + 'bicep': { + "name": 'Bicep', + "level": 10, + "layer": 'Human Interface & System Operations', + "role": 'Local Declarative DSL', + "category": 'Local Declarative DSL', + "installer": { + "type": 'npm', + "pkg": '@azure/bicep', + }, + "launcher": { + "type": 'desktop', + "cmd": 'bicep --version', + "default_port": None, + }, + "deps": [ + ], + "description": 'Declarative template engine designed to outline system deployments under standard configurations.', + "license": 'MIT', + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False, + "is_ollama": False, + "is_passive": False, + "is_mcp": False, + "is_skills_collection": False, + } + }, + 'calibre': { + "name": 'Calibre', + "level": 10, + "layer": 'Human Interface & System Operations', + "role": 'Library Manager', + "category": 'Library Manager', + "installer": { + "type": 'pacman', + "pkg": 'calibre', + }, + "launcher": { + "type": 'desktop', + "cmd": 'calibre', + "default_port": None, + }, + "deps": [ + ], + "description": 'Comprehensive e-book management, database indexing, and PDF converter utility running offline.', + "license": 'GPL-3.0', + "flags": { + "has_cli": True, + "has_gui": True, + "has_web": True, + "is_ollama": False, + "is_passive": False, + "is_mcp": False, + "is_skills_collection": False, + } + }, + 'career_ops': { + "name": 'Career Ops', + "level": 10, + "layer": 'Human Interface & System Operations', + "role": 'Gap Analyzer', + "category": 'Gap Analyzer', + "installer": { + "type": 'git', + "pkg": 'https://github.com/nicely-done/career-ops', + }, + "launcher": { + "type": 'desktop', + "cmd": 'career-ops analyze', + "default_port": None, + }, + "deps": [ + ], + "description": 'Self-hosted utility designed to scan developer resumes and audit skill gaps offline.', + "license": 'Proprietary', + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False, + "is_ollama": False, + "is_passive": False, + "is_mcp": False, + "is_skills_collection": False, } }, 'dashy': { "name": 'Dashy', - "level": 8, - "layer": 'User Interfaces', - "role": 'Dashboard', - "category": 'Homepage', + "level": 10, + "layer": 'Human Interface & System Operations', + "role": 'Cluster Homepage', + "category": 'Cluster Homepage', "installer": { "type": 'npm', - "pkg": 'dashy' + "pkg": 'dashy', }, "launcher": { "type": 'tmux', "cmd": 'dashy --port {port}', - "default_port": 3000 + "default_port": 3000, }, - "deps": [], - "description": 'Highly customizable dashboard and homepage.', + "deps": [ + ], + "description": 'Highly customizable visual homepage displaying active link cards for all cluster daemons.', "license": 'Proprietary', "flags": { "has_cli": False, @@ -2739,26 +2395,37 @@ DEFAULT_REGISTRY: dict = { "is_ollama": False, "is_passive": False, "is_mcp": False, - "is_skills_collection": False + "is_skills_collection": False, } }, 'dify': { "name": 'Dify', - "level": 5, - "layer": 'Orchestrators', - "role": 'Pipeline Orchestrator', - "category": 'Pipeline', + "level": 10, + "layer": 'Human Interface & System Operations', + "role": 'Platform Workspace', + "category": 'Platform Workspace', "installer": { "type": 'git', - "pkg": 'https://github.com/langgenius/dify.git' + "pkg": 'https://github.com/langgenius/dify.git', }, "launcher": { "type": 'tmux', "cmd": 'cd {tools_root}/dify/api && poetry run flask run --host 0.0.0.0 --port={port}', - "default_port": 5001 + "default_port": 5001, }, - "deps": ['postgresql', 'redis', 'python', 'node'], - "description": 'LLM application development platform (native install). Requires Poetry, Node.js 18+, FFmpeg. Backend (Flask) + Celery worker + Next.js frontend run as separate services.', + "deps": [ + 'postgresql', + 'redis', + 'python', + 'node', + ], + "filesystem": { + "install": 'tools/dify', + "config": 'configs/dify', + "data": 'data/dify', + "logs": 'logs/dify', + }, + "description": 'Complex web-based platform workspace hosting multiple multi-agent triggers, web hooks, and visual prompts.', "license": 'Dify-OSL', "flags": { "has_cli": False, @@ -2767,32 +2434,32 @@ DEFAULT_REGISTRY: dict = { "is_ollama": False, "is_passive": False, "is_mcp": False, - "is_skills_collection": False - }, - "filesystem": { - "install": 'tools/dify', - "config": 'configs/dify', - "data": 'data/dify', - "logs": 'logs/dify' + "is_skills_collection": False, } }, 'flowise': { "name": 'Flowise', - "level": 8, - "layer": 'User Interfaces', - "role": 'Face', - "category": 'Workflow', + "level": 10, + "layer": 'Human Interface & System Operations', + "role": 'Visual Agent Canvas', + "category": 'Visual Agent Canvas', "installer": { "type": 'npm', - "pkg": 'flowise' + "pkg": 'flowise', }, "launcher": { "type": 'tmux', "cmd": 'npx flowise start --port {port}', - "default_port": 3000 + "default_port": 3000, }, - "deps": [], - "description": 'Drag & drop UI to build customized LLM flows.', + "deps": [ + ], + "filesystem": { + "install": 'tools/flowise', + "data": 'data/flowise', + "logs": 'logs/flowise', + }, + "description": 'Drag-and-drop workspace UI to build customized LLM pipelines, multi-agent frameworks, and RAG flows.', "license": 'Apache-2.0', "flags": { "has_cli": False, @@ -2801,35 +2468,39 @@ DEFAULT_REGISTRY: dict = { "is_ollama": False, "is_passive": False, "is_mcp": False, - "is_skills_collection": False - }, - "filesystem": { - "install": 'tools/flowise', - "data": 'data/flowise', - "logs": 'logs/flowise' + "is_skills_collection": False, } }, 'forge': { "name": 'Forge (A1111)', - "level": 8, - "layer": 'User Interfaces', - "role": 'Face', - "category": 'Image Generation', + "level": 10, + "layer": 'Human Interface & System Operations', + "role": 'Image WebUI', + "category": 'Image WebUI', "installer": { "type": 'git', "pkg": 'https://github.com/AUTOMATIC1111/stable-diffusion-webui-forge', "env_overrides": { 'HF_HOME': '{base_dir}/cache/huggingface', - 'DIFFUSERS_CACHE': '{base_dir}/cache/huggingface' - } + 'DIFFUSERS_CACHE': '{base_dir}/cache/huggingface', + }, }, "launcher": { "type": 'tmux', "cmd": 'cd {tools_root}/forge && python3 launch.py --port {port}', - "default_port": 7860 + "default_port": 7860, }, - "deps": ['cuda'], - "description": 'Stable Diffusion WebUI Forge (optimized fork).', + "deps": [ + 'cuda', + ], + "filesystem": { + "install": 'tools/forge', + "config": 'configs/forge', + "data": 'data/forge', + "cache": 'cache/forge', + "logs": 'logs/forge', + }, + "description": 'Stable Diffusion graphical interface for direct image generation using physical CUDA acceleration cores.', "license": 'AGPL-3.0', "flags": { "has_cli": False, @@ -2838,33 +2509,122 @@ DEFAULT_REGISTRY: dict = { "is_ollama": False, "is_passive": False, "is_mcp": False, - "is_skills_collection": False + "is_skills_collection": False, + } }, - "filesystem": { - "install": 'tools/forge', - "config": 'configs/forge', - "data": 'data/forge', - "cache": 'cache/forge', - "logs": 'logs/forge' + 'glances': { + "name": 'Glances', + "level": 10, + "layer": 'Human Interface & System Operations', + "role": 'Telemetry Monitor', + "category": 'Telemetry Monitor', + "installer": { + "type": 'pacman', + "pkg": 'glances', + }, + "launcher": { + "type": 'tmux', + "cmd": 'glances -w --port {port}', + "default_port": 61208, + }, + "deps": [ + ], + "description": 'Cross-platform system resources dashboard tracking CPU, memory, and network sockets natively.', + "license": 'LGPL-3.0', + "flags": { + "has_cli": False, + "has_gui": False, + "has_web": True, + "is_ollama": False, + "is_passive": False, + "is_mcp": False, + "is_skills_collection": False, + } + }, + 'grafana': { + "name": 'Grafana', + "level": 10, + "layer": 'Human Interface & System Operations', + "role": 'Telemetry Visualizer', + "category": 'Telemetry Visualizer', + "installer": { + "type": 'pacman', + "pkg": 'grafana', + }, + "launcher": { + "type": 'systemd', + "cmd": 'grafana-server', + "default_port": 3000, + }, + "deps": [ + ], + "description": 'Multi-source metrics dashboarding suite to monitor compute health and VRAM throughput visually.', + "license": 'AGPL-3.0', + "flags": { + "has_cli": False, + "has_gui": False, + "has_web": True, + "is_ollama": False, + "is_passive": False, + "is_mcp": False, + "is_skills_collection": False, + } + }, + 'grafana_alloy': { + "name": 'Grafana Alloy', + "level": 10, + "layer": 'Human Interface & System Operations', + "role": 'Alloy Telemetry', + "category": 'Alloy Telemetry', + "installer": { + "type": 'script', + "pkg": 'grafana/alloy', + "cmd": 'mkdir -p {tools_root}/grafana_alloy/bin && curl -fsSL -o {tools_root}/grafana_alloy/bin/alloy https://github.com/grafana/alloy/releases/latest/download/alloy-linux-amd64 && chmod +x {tools_root}/grafana_alloy/bin/alloy', + }, + "launcher": { + "type": 'tmux', + "cmd": 'alloy run --server.http.listen-port={port}', + "default_port": 12345, + }, + "deps": [ + 'prometheus', + ], + "description": 'OpenTelemetry pipeline collector collecting and aggregating system metrics from the cluster daemon endpoints.', + "license": 'Apache-2.0', + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": True, + "is_ollama": False, + "is_passive": False, + "is_mcp": False, + "is_skills_collection": False, } }, 'hermes': { "name": 'Hermes', - "level": 8, - "layer": 'User Interfaces', - "role": 'Agent', - "category": 'AI Agent', + "level": 10, + "layer": 'Human Interface & System Operations', + "role": 'Ecosystem Launcher', + "category": 'Ecosystem Launcher', "installer": { "type": 'npm', - "pkg": 'hermes-ai' + "pkg": 'hermes-ai', }, "launcher": { "type": 'tmux', "cmd": 'hermes dashboard --port {port} --data-dir {workspaces_root}/hermes & hermes desktop --data-dir {workspaces_root}/hermes', - "default_port": 17050 + "default_port": 17050, }, - "deps": ['ollama'], - "description": 'Unified desktop and dashboard environment for the AI ecosystem.', + "deps": [ + 'ollama', + ], + "filesystem": { + "install": 'tools/hermes', + "data": 'workspaces/hermes', + "logs": 'logs/hermes', + }, + "description": 'Unified desktop assistant combining active chat with resource monitors in a single visual framework.', "license": 'MIT', "flags": { "has_cli": True, @@ -2873,31 +2633,58 @@ DEFAULT_REGISTRY: dict = { "is_ollama": False, "is_passive": False, "is_mcp": False, - "is_skills_collection": False + "is_skills_collection": False, + } }, - "filesystem": { - "install": 'tools/hermes', - "data": 'workspaces/hermes', - "logs": 'logs/hermes' + 'hermes_dashboard_page': { + "name": 'Hermes Dashboard', + "level": 10, + "layer": 'Human Interface & System Operations', + "role": 'System Console', + "category": 'System Console', + "installer": { + "type": 'npm', + "pkg": 'hermes-dashboard', + }, + "launcher": { + "type": 'tmux', + "cmd": 'hermes dashboard --port {port}', + "default_port": 17050, + }, + "deps": [ + 'ollama', + ], + "description": 'Web-based graphical telemetry manager tracking active tasks and cluster state variables.', + "license": 'Proprietary', + "flags": { + "has_cli": False, + "has_gui": False, + "has_web": True, + "is_ollama": False, + "is_passive": False, + "is_mcp": False, + "is_skills_collection": False, } }, 'hermes_desktop': { "name": 'Hermes Desktop', - "level": 8, - "layer": 'User Interfaces', - "role": 'Face', - "category": 'Desktop Agent', + "level": 10, + "layer": 'Human Interface & System Operations', + "role": 'Desktop GUI', + "category": 'Desktop GUI', "installer": { "type": 'npm', - "pkg": 'hermes-desktop' + "pkg": 'hermes-desktop', }, "launcher": { "type": 'desktop', "cmd": 'hermes desktop', - "default_port": None + "default_port": None, }, - "deps": ['ollama'], - "description": 'Hermes desktop agent environment.', + "deps": [ + 'ollama', + ], + "description": 'Desktop agent application designed to capture text prompts and run silent tasks in the background.', "license": 'MIT', "flags": { "has_cli": False, @@ -2906,137 +2693,128 @@ DEFAULT_REGISTRY: dict = { "is_ollama": False, "is_passive": False, "is_mcp": False, - "is_skills_collection": False + "is_skills_collection": False, + } + }, + 'homelab': { + "name": 'Homelab', + "level": 10, + "layer": 'Human Interface & System Operations', + "role": 'Metal Provisioner', + "category": 'Metal Provisioner', + "installer": { + "type": 'git', + "pkg": 'https://github.com/khuedoan/homelab', + "cmd": '', + }, + "launcher": { + "type": 'desktop', + "cmd": 'homelab', + "default_port": None, + }, + "deps": [ + 'ansible', + ], + "description": 'Automates full homelab provisioning from raw drive format to k3s cluster setup in a single run.', + "license": 'Proprietary', + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False, + "is_ollama": False, + "is_passive": False, + "is_mcp": False, + "is_skills_collection": False, } }, 'invokeai': { "name": 'InvokeAI', - "level": 8, - "layer": 'User Interfaces', - "role": 'Face', - "category": 'Image Generation', + "level": 10, + "layer": 'Human Interface & System Operations', + "role": 'Studio Canvas', + "category": 'Studio Canvas', "installer": { "type": 'git', "pkg": 'https://github.com/invoke-ai/InvokeAI', "env_overrides": { 'HF_HOME': '{base_dir}/cache/huggingface', - 'DIFFUSERS_CACHE': '{base_dir}/cache/huggingface' - } + 'DIFFUSERS_CACHE': '{base_dir}/cache/huggingface', + }, }, "launcher": { "type": 'tmux', "cmd": 'cd {tools_root}/invokeai && invokeai --host 0.0.0.0 --port {port}', - "default_port": 9090 - }, - "deps": ['cuda'], - "description": 'Professional AI image generation workspace.', - "license": 'MIT', - "flags": { - "has_cli": True, - "has_gui": True, - "has_web": True, - "is_ollama": False, - "is_passive": False, - "is_mcp": False, - "is_skills_collection": False + "default_port": 9090, }, + "deps": [ + 'cuda', + ], "filesystem": { "install": 'tools/invokeai', "config": 'configs/invokeai', "data": 'data/invokeai', "cache": 'cache/invokeai', - "logs": 'logs/invokeai' - } + "logs": 'logs/invokeai', }, - 'langflow': { - "name": 'LangFlow', - "level": 5, - "layer": 'Orchestrators', - "role": 'Visual Builder', - "category": 'Workflow Builder', - "installer": { - "type": 'uv', - "pkg": 'langflow', - "env_overrides": { - 'LANGFLOW_CONFIG_DIR': '{base_dir}/configs/langflow' - } - }, - "launcher": { - "type": 'tmux', - "cmd": 'langflow run --port {port}', - "default_port": 7860 - }, - "deps": [], - "description": 'Visual framework for multi-agent and RAG workflows.', - "license": 'Apache-2.0', - "flags": { - "has_cli": True, - "has_gui": False, - "has_web": True, - "is_ollama": False, - "is_passive": False, - "is_mcp": False, - "is_skills_collection": False - }, - "filesystem": { - "install": 'tools/langflow', - "config": 'configs/langflow', - "cache": 'cache/langflow', - "logs": 'logs/langflow' - } - }, - 'librechat': { - "name": 'LibreChat', - "level": 8, - "layer": 'User Interfaces', - "role": 'Agent Frontend', - "category": 'Chat Agent Platform', - "installer": { - "type": 'git_node', - "pkg": 'https://github.com/danny-avila/LibreChat.git', - "update_cmd": 'git pull --ff-only && yarn install && yarn build' - }, - "launcher": { - "type": 'tmux', - "cmd": 'cd {tools_root}/librechat && API_PLUGINS=false PORT={port} NODE_ENV=production yarn backend', - "default_port": 3080 - }, - "deps": ['ollama'], - "description": "Multi-provider chat agent platform with native OpenAI tool-calling, the default agent frontend for AI-LSC's agentic orchestration.", + "description": 'Professional visual editing canvas for offline text-to-image synthesis and mask-based rendering.', "license": 'MIT', "flags": { - "has_cli": False, - "has_gui": False, + "has_cli": True, + "has_gui": True, "has_web": True, "is_ollama": False, "is_passive": False, "is_mcp": False, - "is_skills_collection": False - }, - "filesystem": { - "install": 'tools/librechat', - "config": 'configs/librechat', - "data": 'data/librechat', - "logs": 'logs/librechat' + "is_skills_collection": False, } }, - 'local_llm_launcher': { - "name": 'Local LLM Launcher', - "level": 8, - "layer": 'User Interfaces', - "role": 'Face', - "category": 'Desktop Launcher', + 'joplin': { + "name": 'Joplin', + "level": 10, + "layer": 'Human Interface & System Operations', + "role": 'Offline Journal', + "category": 'Offline Journal', "installer": { - "type": 'git', - "pkg": 'https://github.com/nicely-done/local-llm-launcher-gui' + "type": 'pacman', + "pkg": 'joplin', }, "launcher": { "type": 'desktop', - "cmd": 'cd {tools_root}/local_llm_launcher && python3 main.py', - "default_port": None + "cmd": 'joplin', + "default_port": None, }, - "deps": ['ollama'], - "description": 'GUI launcher and manager for local LLMs.', + "deps": [ + ], + "description": 'Privacy-first note-taking and task list application syncing natively via SQLite3 files.', + "license": 'MIT', + "flags": { + "has_cli": True, + "has_gui": True, + "has_web": True, + "is_ollama": False, + "is_passive": False, + "is_mcp": False, + "is_skills_collection": False, + } + }, + 'kanban': { + "name": 'Kanban Board', + "level": 10, + "layer": 'Human Interface & System Operations', + "role": 'Sprints Manager', + "category": 'Sprints Manager', + "installer": { + "type": 'npm', + "pkg": 'kanban-board', + }, + "launcher": { + "type": 'desktop', + "cmd": 'kanban', + "default_port": None, + }, + "deps": [ + ], + "description": 'Local visual dashboard designed to map task timelines and track developer sprints natively.', "license": 'Proprietary', "flags": { "has_cli": False, @@ -3045,299 +2823,289 @@ DEFAULT_REGISTRY: dict = { "is_ollama": False, "is_passive": False, "is_mcp": False, - "is_skills_collection": False + "is_skills_collection": False, } }, - 'openjarvis': { - "name": 'OpenJarvis', - "level": 8, - "layer": 'User Interfaces', - "role": 'Central Intelligence', - "category": 'AI Assistant Platform', + 'langflow': { + "name": 'LangFlow', + "level": 10, + "layer": 'Human Interface & System Operations', + "role": 'RAG Flow Canvas', + "category": 'RAG Flow Canvas', "installer": { - "type": 'git_node', - "pkg": 'https://github.com/openjarvis/openjarvis.git', - "post_install": 'npm install && npm run build' + "type": 'uv', + "pkg": 'langflow', + "env_overrides": { + 'LANGFLOW_CONFIG_DIR': '{base_dir}/configs/langflow', + }, }, "launcher": { "type": 'tmux', - "cmd": 'cd {tools_root}/openjarvis && npm start -- --port {port}', - "default_port": 17070 + "cmd": 'langflow run --port {port}', + "default_port": 7860, }, - "deps": ['ollama', 'qdrant'], - "description": 'Central AI assistant platform with multi-modal I/O, memory integration, agentic task execution, and unified dashboard. The brain of the intelligent stack.', - "license": 'Proprietary', + "deps": [ + ], + "filesystem": { + "install": 'tools/langflow', + "config": 'configs/langflow', + "cache": 'cache/langflow', + "logs": 'logs/langflow', + }, + "description": 'Visual node editor for building modular pipelines, routing endpoints, and testing custom prompt streams.', + "license": 'Apache-2.0', "flags": { "has_cli": True, - "has_gui": True, + "has_gui": False, "has_web": True, "is_ollama": False, "is_passive": False, "is_mcp": False, - "is_skills_collection": False + "is_skills_collection": False, + } }, + 'latitude': { + "name": 'Latitude', + "level": 10, + "layer": 'Human Interface & System Operations', + "role": 'Output Evaluator', + "category": 'Output Evaluator', + "installer": { + "type": 'git', + "pkg": 'https://github.com/nicely-done/latitude', + "post_install": 'python3 -m venv .venv && .venv/bin/pip install -r requirements.txt 2>/dev/null || .venv/bin/pip install -e .', + }, + "launcher": { + "type": 'tmux', + "cmd": 'cd {tools_root}/latitude && python3 -m latitude serve --port {port}', + "default_port": 9300, + }, + "deps": [ + 'ollama', + ], + "description": 'LLM output evaluation and benchmarking suite designed to trace model degradation across cluster swaps.', + "license": 'Proprietary', + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": True, + "is_ollama": False, + "is_passive": False, + "is_mcp": False, + "is_skills_collection": False, + } + }, + 'librechat': { + "name": 'LibreChat', + "level": 10, + "layer": 'Human Interface & System Operations', + "role": 'Enterprise Assistant', + "category": 'Enterprise Assistant', + "installer": { + "type": 'git_node', + "pkg": 'https://github.com/danny-avila/LibreChat.git', + "update_cmd": 'git pull --ff-only && yarn install && yarn build', + }, + "launcher": { + "type": 'tmux', + "cmd": 'cd {tools_root}/librechat && API_PLUGINS=false PORT={port} NODE_ENV=production yarn backend', + "default_port": 3080, + }, + "deps": [ + 'ollama', + ], + "filesystem": { + "install": 'tools/librechat', + "config": 'configs/librechat', + "data": 'data/librechat', + "logs": 'logs/librechat', + }, + "description": 'Default agent interface with native tool execution, system files parsing, and multi-user configurations.', + "license": 'MIT', + "flags": { + "has_cli": False, + "has_gui": False, + "has_web": True, + "is_ollama": False, + "is_passive": False, + "is_mcp": False, + "is_skills_collection": False, + } + }, + 'local_llm_launcher': { + "name": 'Local LLM Launcher', + "level": 10, + "layer": 'Human Interface & System Operations', + "role": 'Model Manager GUI', + "category": 'Model Manager GUI', + "installer": { + "type": 'git', + "pkg": 'https://github.com/nicely-done/local-llm-launcher-gui', + }, + "launcher": { + "type": 'desktop', + "cmd": 'cd {tools_root}/local_llm_launcher && python3 main.py', + "default_port": None, + }, + "deps": [ + 'ollama', + ], + "description": 'Desktop GUI utility built to trigger local model down-loaders and boot default executors.', + "license": 'Proprietary', + "flags": { + "has_cli": False, + "has_gui": True, + "has_web": False, + "is_ollama": False, + "is_passive": False, + "is_mcp": False, + "is_skills_collection": False, + } + }, + 'logseq': { + "name": 'Logseq', + "level": 10, + "layer": 'Human Interface & System Operations', + "role": 'Outliner Graph', + "category": 'Outliner Graph', + "installer": { + "type": 'npm', + "pkg": 'logseq', + }, + "launcher": { + "type": 'desktop', + "cmd": 'logseq', + "default_port": None, + }, + "deps": [ + ], + "description": 'Privacy-first knowledge graph outliner storing local markdown files with local git synchronization.', + "license": 'AGPL-3.0', + "flags": { + "has_cli": False, + "has_gui": True, + "has_web": False, + "is_ollama": False, + "is_passive": False, + "is_mcp": False, + "is_skills_collection": False, + } + }, + 'mnemosyne': { + "name": 'Mnemosyne', + "level": 10, + "layer": 'Human Interface & System Operations', + "role": 'Learning Cards', + "category": 'Learning Cards', + "installer": { + "type": 'pipx', + "pkg": 'mnemosyne', + }, + "launcher": { + "type": 'desktop', + "cmd": 'mnemosyne', + "default_port": None, + }, + "deps": [ + ], + "description": 'Spaced repetition flashcard software designed to integrate with agent memory caches for automated studies.', + "license": 'MIT', + "flags": { + "has_cli": False, + "has_gui": True, + "has_web": False, + "is_ollama": False, + "is_passive": False, + "is_mcp": False, + "is_skills_collection": False, + } + }, + 'obsidian': { + "name": 'Obsidian', + "level": 10, + "layer": 'Human Interface & System Operations', + "role": 'Sovereign Graph Editor', + "category": 'Sovereign Graph Editor', + "installer": { + "type": 'pacman', + "pkg": 'obsidian', + }, + "launcher": { + "type": 'desktop', + "cmd": 'obsidian', + "default_port": None, + }, + "deps": [ + ], + "description": 'Local-first note-taking system and knowledge graph displaying hyperlinked markdown files visually.', + "license": 'Proprietary', + "flags": { + "has_cli": False, + "has_gui": True, + "has_web": False, + "is_ollama": False, + "is_passive": False, + "is_mcp": False, + "is_skills_collection": False, + } + }, + 'openjarvis': { + "name": 'OpenJarvis', + "level": 10, + "layer": 'Human Interface & System Operations', + "role": 'Local Central Shell', + "category": 'Local Central Shell', + "installer": { + "type": 'git_node', + "pkg": 'https://github.com/openjarvis/openjarvis.git', + "post_install": 'npm install && npm run build', + }, + "launcher": { + "type": 'tmux', + "cmd": 'cd {tools_root}/openjarvis && npm start -- --port {port}', + "default_port": 17070, + }, + "deps": [ + 'ollama', + 'qdrant', + ], "filesystem": { "install": 'tools/openjarvis', "config": 'configs/openjarvis', "data": 'workspaces/openjarvis', "cache": 'cache/openjarvis', - "logs": 'logs/openjarvis' - } + "logs": 'logs/openjarvis', }, - 'openwebui': { - "name": 'Open WebUI', - "level": 8, - "layer": 'User Interfaces', - "role": 'Face', - "category": 'Chat Frontend', - "installer": { - "type": 'uv', - "pkg": 'open-webui', - "env_overrides": { - 'OPEN_WEBUI_CONFIG_DIR': '{base_dir}/configs/openwebui' - } - }, - "launcher": { - "type": 'tmux', - "cmd": 'open-webui serve --port {port} --data-dir {workspaces_root}/openwebui', - "default_port": 8080 - }, - "deps": ['ollama'], - "description": 'Extensible frontend for LLMs.', - "license": 'MIT', + "description": 'Centralized workspace manager providing multi-modal operations, file indexing, and unified terminal control.', + "license": 'Proprietary', "flags": { - "has_cli": False, - "has_gui": False, + "has_cli": True, + "has_gui": True, "has_web": True, "is_ollama": False, "is_passive": False, "is_mcp": False, - "is_skills_collection": False - }, - "filesystem": { - "install": 'tools/openwebui', - "config": 'configs/openwebui', - "data": 'workspaces/openwebui', - "logs": 'logs/openwebui' - } - }, - - # ── L12: DevOps ──────────────────────────────────────────── - 'ansible': { - "name": 'Ansible', - "level": 9, - "layer": 'DevOps', - "role": 'Configuration Management', - "category": 'Config Management', - "installer": { - "type": 'pacman', - "pkg": 'ansible' - }, - "launcher": { - "type": 'desktop', - "cmd": 'ansible --version', - "default_port": None - }, - "deps": [], - "description": 'Agentless IT automation and configuration management.', - "license": 'GPL-3.0', - "flags": { - "has_cli": True, - "has_gui": False, - "has_web": False, - "is_ollama": False, - "is_passive": False, - "is_mcp": False, - "is_skills_collection": False - } - }, - 'aws_cdk': { - "name": 'AWS CDK', - "level": 9, - "layer": 'DevOps', - "role": 'Infrastructure as Code', - "category": 'IaC', - "installer": { - "type": 'npm', - "pkg": 'aws-cdk' - }, - "launcher": { - "type": 'desktop', - "cmd": 'cdk --version', - "default_port": None - }, - "deps": [], - "description": 'Cloud Development Kit — define AWS CloudFormation in code.', - "license": 'Apache-2.0', - "flags": { - "has_cli": True, - "has_gui": False, - "has_web": False, - "is_ollama": False, - "is_passive": False, - "is_mcp": False, - "is_skills_collection": False - } - }, - 'bicep': { - "name": 'Bicep', - "level": 9, - "layer": 'DevOps', - "role": 'Infrastructure as Code', - "category": 'IaC', - "installer": { - "type": 'npm', - "pkg": '@azure/bicep' - }, - "launcher": { - "type": 'desktop', - "cmd": 'bicep --version', - "default_port": None - }, - "deps": [], - "description": 'Azure domain-specific language for declarative infrastructure.', - "license": 'MIT', - "flags": { - "has_cli": True, - "has_gui": False, - "has_web": False, - "is_ollama": False, - "is_passive": False, - "is_mcp": False, - "is_skills_collection": False - } - }, - 'container_tool': { - "name": 'Container Toolkit', - "level": 9, - "layer": 'DevOps', - "role": 'Isolation', - "category": 'Sandbox', - "installer": { - "type": 'git', - "pkg": 'https://github.com/nicely-done/container' - }, - "launcher": { - "type": 'desktop', - "cmd": 'container --help', - "default_port": None - }, - "deps": [], - "description": 'Lightweight container sandbox for code execution.', - "license": 'Proprietary', - "flags": { - "has_cli": True, - "has_gui": False, - "has_web": False, - "is_ollama": False, - "is_passive": False, - "is_mcp": False, - "is_skills_collection": False - } - }, - 'crossplane': { - "name": 'Crossplane', - "level": 9, - "layer": 'DevOps', - "role": 'Infrastructure as Code', - "category": 'IaC Control Plane', - "installer": { - "type": 'custom', - "pkg": 'https://docs.crossplane.io/v2/getting-started/install/' - }, - "launcher": { - "type": 'desktop', - "cmd": 'crossplane --help', - "default_port": None - }, - "deps": ['kubectl'], - "description": 'Kubernetes-native cloud infrastructure control plane.', - "license": 'Apache-2.0', - "flags": { - "has_cli": True, - "has_gui": False, - "has_web": False, - "is_ollama": False, - "is_passive": False, - "is_mcp": False, - "is_skills_collection": False - } - }, - 'homelab': { - "name": 'Homelab', - "level": 9, - "layer": 'DevOps', - "role": 'Infrastructure as Code', - "category": 'Provisioning', - "installer": { - "type": 'git', - "pkg": 'https://github.com/khuedoan/homelab', - "cmd": '' - }, - "launcher": { - "type": 'desktop', - "cmd": 'homelab', - "default_port": None - }, - "deps": ['ansible'], - "description": 'Fully automated homelab provisioning from empty disk to running services in one command. IaC/GitOps: Packer + Terraform + Ansible + k3s + ArgoCD.', - "license": 'Proprietary', - "flags": { - "has_cli": True, - "has_gui": False, - "has_web": False, - "is_ollama": False, - "is_passive": False, - "is_mcp": False, - "is_skills_collection": False - } - }, - 'opensandbox': { - "name": 'OpenSandbox', - "level": 9, - "layer": 'DevOps', - "role": 'Isolation', - "category": 'Sandbox', - "installer": { - "type": 'git', - "pkg": 'https://github.com/nicely-done/opensandbox', - "post_install": 'python3 -m venv .venv && .venv/bin/pip install -r requirements.txt 2>/dev/null || .venv/bin/pip install -e .' - }, - "launcher": { - "type": 'tmux', - "cmd": 'cd {tools_root}/opensandbox && python3 serve.py --port {port}', - "default_port": 9100 - }, - "deps": [], - "description": 'Secure sandboxed execution environment for AI agents.', - "license": 'Proprietary', - "flags": { - "has_cli": True, - "has_gui": False, - "has_web": True, - "is_ollama": False, - "is_passive": False, - "is_mcp": False, - "is_skills_collection": False + "is_skills_collection": False, } }, 'opentofu': { "name": 'OpenTofu', - "level": 9, - "layer": 'DevOps', - "role": 'Infrastructure as Code', - "category": 'IaC', + "level": 10, + "layer": 'Human Interface & System Operations', + "role": 'Open-Source IaC', + "category": 'Open-Source IaC', "installer": { "type": 'custom', - "pkg": 'https://opentofu.org/docs/intro/install/' + "pkg": 'https://opentofu.org/docs/intro/install/', }, "launcher": { "type": 'desktop', "cmd": 'tofu version', - "default_port": None + "default_port": None, }, - "deps": [], - "description": 'Open-source Terraform fork maintained by the Linux Foundation.', + "deps": [ + ], + "description": 'Open-source Terraform fork under the Linux Foundation designed to automate resource bindings.', "license": 'MPL-2.0', "flags": { "has_cli": True, @@ -3346,395 +3114,106 @@ DEFAULT_REGISTRY: dict = { "is_ollama": False, "is_passive": False, "is_mcp": False, - "is_skills_collection": False + "is_skills_collection": False, } }, - 'pulumi': { - "name": 'Pulumi', - "level": 9, - "layer": 'DevOps', - "role": 'Infrastructure as Code', - "category": 'IaC', - "installer": { - "type": 'npm', - "pkg": '@pulumi/pulumi' - }, - "launcher": { - "type": 'desktop', - "cmd": 'pulumi version', - "default_port": None - }, - "deps": [], - "description": 'IaC platform using real programming languages (Python, TypeScript, Go).', - "license": 'Apache-2.0', - "flags": { - "has_cli": True, - "has_gui": False, - "has_web": False, - "is_ollama": False, - "is_passive": False, - "is_mcp": False, - "is_skills_collection": False - } - }, - 'puppet': { - "name": 'Puppet', - "level": 9, - "layer": 'DevOps', - "role": 'Configuration Management', - "category": 'Config Management', - "installer": { - "type": 'pacman', - "pkg": 'puppet' - }, - "launcher": { - "type": 'desktop', - "cmd": 'puppet --version', - "default_port": None - }, - "deps": [], - "description": 'Declarative configuration management tool.', - "license": 'Proprietary', - "flags": { - "has_cli": True, - "has_gui": False, - "has_web": False, - "is_ollama": False, - "is_passive": False, - "is_mcp": False, - "is_skills_collection": False - } - }, - 'sst': { - "name": 'SST (Serverless Stack)', - "level": 2, - "layer": 'Development Environment', - "role": 'Infrastructure as Code', - "category": 'Serverless Framework', - "installer": { - "type": 'npm', - "pkg": 'sst' - }, - "launcher": { - "type": 'desktop', - "cmd": 'sst --version', - "default_port": None - }, - "deps": [], - "description": 'Framework for building full-stack apps on your own infrastructure.', - "license": 'MIT', - "flags": { - "has_cli": True, - "has_gui": False, - "has_web": False, - "is_ollama": False, - "is_passive": False, - "is_mcp": False, - "is_skills_collection": False - } - }, - 'stack_exporter': { - "name": 'Stack Container Packager', - "level": 9, - "layer": 'DevOps', - "role": 'Runtime Packaging', - "category": 'OCI Export', - "installer": { - "type": 'pacman', - "pkg": 'podman' - }, - "launcher": { - "type": 'desktop', - "cmd": 'podman --version', - "default_port": None - }, - "deps": [], - "description": 'Compiles validated pipeline matrices into Podman/Docker specs.', - "license": 'MIT', - "flags": { - "has_cli": True, - "has_gui": False, - "has_web": False, - "is_ollama": False, - "is_passive": False, - "is_mcp": False, - "is_skills_collection": False - } - }, - 'terraform': { - "name": 'Terraform', - "level": 9, - "layer": 'DevOps', - "role": 'Infrastructure as Code', - "category": 'IaC', - "installer": { - "type": 'pacman', - "pkg": 'terraform' - }, - "launcher": { - "type": 'desktop', - "cmd": 'terraform version', - "default_port": None - }, - "deps": [], - "description": 'Infrastructure as Code provisioning tool.', - "license": 'BSL-1.1', - "flags": { - "has_cli": True, - "has_gui": False, - "has_web": False, - "is_ollama": False, - "is_passive": False, - "is_mcp": False, - "is_skills_collection": False - } - }, - 'terragrunt': { - "name": 'Terragrunt', - "level": 9, - "layer": 'DevOps', - "role": 'Infrastructure as Code', - "category": 'IaC Wrapper', - "installer": { - "type": 'custom', - "pkg": 'https://terragrunt.gruntwork.io/docs/getting-started/install/' - }, - "launcher": { - "type": 'desktop', - "cmd": 'terragrunt --version', - "default_port": None - }, - "deps": ['terraform'], - "description": 'Thin wrapper for Terraform providing DRY config and remote state.', - "license": 'MIT', - "flags": { - "has_cli": True, - "has_gui": False, - "has_web": False, - "is_ollama": False, - "is_passive": False, - "is_mcp": False, - "is_skills_collection": False - } - }, - - # ── L13: Knowledge Management ────────────────────────────── - 'calibre': { - "name": 'Calibre', + 'openwebui': { + "name": 'Open WebUI', "level": 10, - "layer": 'Knowledge Management', - "role": 'Library Manager', - "category": 'Ebook Library', + "layer": 'Human Interface & System Operations', + "role": 'Extensible Interface', + "category": 'Extensible Interface', "installer": { - "type": 'pacman', - "pkg": 'calibre' + "type": 'uv', + "pkg": 'open-webui', + "env_overrides": { + 'OPEN_WEBUI_CONFIG_DIR': '{base_dir}/configs/openwebui', + }, }, "launcher": { - "type": 'desktop', - "cmd": 'calibre', - "default_port": None + "type": 'tmux', + "cmd": 'open-webui serve --port {port} --data-dir {workspaces_root}/openwebui', + "default_port": 8080, }, - "deps": [], - "description": 'E-book library management and converter.', - "license": 'GPL-3.0', + "deps": [ + 'ollama', + ], + "filesystem": { + "install": 'tools/openwebui', + "config": 'configs/openwebui', + "data": 'workspaces/openwebui', + "logs": 'logs/openwebui', + }, + "description": 'Web-based graphical assistant interface that routes prompts and provides full visual model execution.', + "license": 'MIT', "flags": { - "has_cli": True, - "has_gui": True, + "has_cli": False, + "has_gui": False, "has_web": True, "is_ollama": False, "is_passive": False, "is_mcp": False, - "is_skills_collection": False + "is_skills_collection": False, } }, - 'career_ops': { - "name": 'Career Ops', - "level": 9, - "layer": 'DevOps', - "role": 'Assessment', - "category": 'Skill Analysis', + 'opik': { + "name": 'Opik', + "level": 10, + "layer": 'Human Interface & System Operations', + "role": 'LLM Observability', + "category": 'LLM Observability', "installer": { - "type": 'git', - "pkg": 'https://github.com/nicely-done/career-ops' + "type": 'uv', + "pkg": 'opik', }, "launcher": { - "type": 'desktop', - "cmd": 'career-ops analyze', - "default_port": None + "type": 'tmux', + "cmd": 'opik serve --port {port}', + "default_port": 3000, }, - "deps": [], - "description": 'Career skill assessment and gap analysis tool.', + "deps": [ + ], + "description": 'Open-source LLM observability, tracing, and verification dashboard tracking active agent loops and prompt metrics.', "license": 'Proprietary', "flags": { "has_cli": True, "has_gui": False, - "has_web": False, - "is_ollama": False, - "is_passive": False, - "is_mcp": False, - "is_skills_collection": False - } - }, - 'joplin': { - "name": 'Joplin', - "level": 10, - "layer": 'Knowledge Management', - "role": 'Note Taking', - "category": 'Notes', - "installer": { - "type": 'pacman', - "pkg": 'joplin' - }, - "launcher": { - "type": 'desktop', - "cmd": 'joplin', - "default_port": None - }, - "deps": [], - "description": 'Open-source note taking and to-do application.', - "license": 'MIT', - "flags": { - "has_cli": True, - "has_gui": True, "has_web": True, "is_ollama": False, "is_passive": False, "is_mcp": False, - "is_skills_collection": False - } - }, - 'kanban': { - "name": 'Kanban Board', - "level": 9, - "layer": 'DevOps', - "role": 'Planning', - "category": 'Project Management', - "installer": { - "type": 'npm', - "pkg": 'kanban-board' - }, - "launcher": { - "type": 'desktop', - "cmd": 'kanban', - "default_port": None - }, - "deps": [], - "description": 'Local kanban board for task and sprint management.', - "license": 'Proprietary', - "flags": { - "has_cli": False, - "has_gui": True, - "has_web": False, - "is_ollama": False, - "is_passive": False, - "is_mcp": False, - "is_skills_collection": False - } - }, - 'logseq': { - "name": 'Logseq', - "level": 10, - "layer": 'Knowledge Management', - "role": 'Knowledge Graph', - "category": 'Outliner', - "installer": { - "type": 'npm', - "pkg": 'logseq' - }, - "launcher": { - "type": 'desktop', - "cmd": 'logseq', - "default_port": None - }, - "deps": [], - "description": 'Privacy-first knowledge graph outliner.', - "license": 'AGPL-3.0', - "flags": { - "has_cli": False, - "has_gui": True, - "has_web": False, - "is_ollama": False, - "is_passive": False, - "is_mcp": False, - "is_skills_collection": False - } - }, - 'mnemosyne': { - "name": 'Mnemosyne', - "level": 10, - "layer": 'Knowledge Management', - "role": 'Learning', - "category": 'Spaced Repetition', - "installer": { - "type": 'pipx', - "pkg": 'mnemosyne' - }, - "launcher": { - "type": 'desktop', - "cmd": 'mnemosyne', - "default_port": None - }, - "deps": [], - "description": 'Spaced repetition flashcard program with AI integration.', - "license": 'MIT', - "flags": { - "has_cli": False, - "has_gui": True, - "has_web": False, - "is_ollama": False, - "is_passive": False, - "is_mcp": False, - "is_skills_collection": False - } - }, - 'obsidian': { - "name": 'Obsidian', - "level": 8, - "layer": 'User Interfaces', - "role": 'Knowledge Graph', - "category": 'Notes', - "installer": { - "type": 'pacman', - "pkg": 'obsidian' - }, - "launcher": { - "type": 'desktop', - "cmd": 'obsidian', - "default_port": None - }, - "deps": [], - "description": 'Knowledge graph note-taking and markdown editor.', - "license": 'Proprietary', - "flags": { - "has_cli": False, - "has_gui": True, - "has_web": False, - "is_ollama": False, - "is_passive": False, - "is_mcp": False, - "is_skills_collection": False + "is_skills_collection": False, } }, 'paperlessngx': { "name": 'Paperless-ngx', "level": 10, - "layer": 'Knowledge Management', - "role": 'Document Archive', - "category": 'Document Management', + "layer": 'Human Interface & System Operations', + "role": 'Document Archiver', + "category": 'Document Archiver', "installer": { "type": 'git', "pkg": 'https://github.com/paperless-ngx/paperless-ngx', "env_overrides": { - 'PAPERLESS_DATA_DIR': '{base_dir}/data/paperlessngx' - } + 'PAPERLESS_DATA_DIR': '{base_dir}/data/paperlessngx', + }, }, "launcher": { "type": 'tmux', "cmd": 'cd {tools_root}/paperlessngx && python3 manage.py runserver 0.0.0.0:{port}', - "default_port": 8000 + "default_port": 8000, }, - "deps": ['postgresql', 'redis'], - "description": 'Document management system with OCR.', + "deps": [ + 'postgresql', + 'redis', + ], + "filesystem": { + "install": 'tools/paperlessngx', + "config": 'configs/paperlessngx', + "data": 'data/paperlessngx', + "logs": 'logs/paperlessngx', + }, + "description": 'Document archival system indexing incoming PDF scans via native local Tesseract OCR engine loops.', "license": 'GPL-3.0', "flags": { "has_cli": True, @@ -3743,32 +3222,27 @@ DEFAULT_REGISTRY: dict = { "is_ollama": False, "is_passive": False, "is_mcp": False, - "is_skills_collection": False - }, - "filesystem": { - "install": 'tools/paperlessngx', - "config": 'configs/paperlessngx', - "data": 'data/paperlessngx', - "logs": 'logs/paperlessngx' + "is_skills_collection": False, } }, 'pm_skills': { "name": 'PM Skills', - "level": 9, - "layer": 'DevOps', - "role": 'Skills Collection', - "category": 'Project Management', + "level": 10, + "layer": 'Human Interface & System Operations', + "role": 'Sprint Planner', + "category": 'Sprint Planner', "installer": { "type": 'git', - "pkg": 'https://github.com/nicely-done/pm-skills' + "pkg": 'https://github.com/nicely-done/pm-skills', }, "launcher": { "type": 'desktop', "cmd": 'pm-skills plan', - "default_port": None + "default_port": None, }, - "deps": [], - "description": 'AI-assisted project management and planning skills.', + "deps": [ + ], + "description": 'Local planning script providing automated project estimation templates for developer workspaces.', "license": 'Proprietary', "flags": { "has_cli": True, @@ -3777,26 +3251,203 @@ DEFAULT_REGISTRY: dict = { "is_ollama": False, "is_passive": True, "is_mcp": False, - "is_skills_collection": True + "is_skills_collection": True, + } + }, + 'prometheus': { + "name": 'Prometheus', + "level": 10, + "layer": 'Human Interface & System Operations', + "role": 'Metric Scraper', + "category": 'Metric Scraper', + "installer": { + "type": 'pacman', + "pkg": 'prometheus', + }, + "launcher": { + "type": 'systemd', + "cmd": 'prometheus', + "default_port": 9090, + }, + "deps": [ + ], + "description": 'Time-series database engine designed to scrape and store historical performance telemetry across the cluster.', + "license": 'Apache-2.0', + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": True, + "is_ollama": False, + "is_passive": False, + "is_mcp": False, + "is_skills_collection": False, + } + }, + 'pulse_ai': { + "name": 'Pulse AI', + "level": 10, + "layer": 'Human Interface & System Operations', + "role": 'Auto Recovery Daemon', + "category": 'Auto Recovery Daemon', + "installer": { + "type": 'git', + "pkg": 'https://github.com/nicely-done/pulse-ai', + "post_install": 'python3 -m venv .venv && .venv/bin/pip install -r requirements.txt 2>/dev/null || .venv/bin/pip install -e .', + }, + "launcher": { + "type": 'tmux', + "cmd": 'cd {tools_root}/pulse_ai && python3 -m pulse serve --port {port}', + "default_port": 8900, + }, + "deps": [ + ], + "description": 'AI service health monitor that automatically restarts crashed native systemd services across `/mnt/AI`.', + "license": 'Proprietary', + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": True, + "is_ollama": False, + "is_passive": False, + "is_mcp": False, + "is_skills_collection": False, + } + }, + 'pulumi': { + "name": 'Pulumi', + "level": 10, + "layer": 'Human Interface & System Operations', + "role": 'Programmable IaC', + "category": 'Programmable IaC', + "installer": { + "type": 'npm', + "pkg": '@pulumi/pulumi', + }, + "launcher": { + "type": 'desktop', + "cmd": 'pulumi version', + "default_port": None, + }, + "deps": [ + ], + "description": 'Developer IaC platform designed to define local resource groups using standard Python or Go scripts.', + "license": 'Apache-2.0', + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False, + "is_ollama": False, + "is_passive": False, + "is_mcp": False, + "is_skills_collection": False, + } + }, + 'puppet': { + "name": 'Puppet', + "level": 10, + "layer": 'Human Interface & System Operations', + "role": 'System Auditor', + "category": 'System Auditor', + "installer": { + "type": 'pacman', + "pkg": 'puppet', + }, + "launcher": { + "type": 'desktop', + "cmd": 'puppet --version', + "default_port": None, + }, + "deps": [ + ], + "description": 'Declarative system state auditor checking host directories against master configurations natively.', + "license": 'Proprietary', + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False, + "is_ollama": False, + "is_passive": False, + "is_mcp": False, + "is_skills_collection": False, + } + }, + 'terraform': { + "name": 'Terraform', + "level": 10, + "layer": 'Human Interface & System Operations', + "role": 'Infrastructure Provision', + "category": 'Infrastructure Provision', + "installer": { + "type": 'pacman', + "pkg": 'terraform', + }, + "launcher": { + "type": 'desktop', + "cmd": 'terraform version', + "default_port": None, + }, + "deps": [ + ], + "description": 'Declarative infrastructure as code provisioning engine that maps cluster layouts to configurations.', + "license": 'BSL-1.1', + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False, + "is_ollama": False, + "is_passive": False, + "is_mcp": False, + "is_skills_collection": False, + } + }, + 'terragrunt': { + "name": 'Terragrunt', + "level": 10, + "layer": 'Human Interface & System Operations', + "role": 'IaC DRY Wrapper', + "category": 'IaC DRY Wrapper', + "installer": { + "type": 'custom', + "pkg": 'https://terragrunt.gruntwork.io/docs/getting-started/install/', + }, + "launcher": { + "type": 'desktop', + "cmd": 'terragrunt --version', + "default_port": None, + }, + "deps": [ + 'terraform', + ], + "description": 'Thin wrapper designed to maintain clean configuration layouts and enforce DRY setups across clusters.', + "license": 'MIT', + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False, + "is_ollama": False, + "is_passive": False, + "is_mcp": False, + "is_skills_collection": False, } }, 'zotero': { "name": 'Zotero', "level": 10, - "layer": 'Knowledge Management', + "layer": 'Human Interface & System Operations', "role": 'Reference Manager', - "category": 'Academic References', + "category": 'Reference Manager', "installer": { "type": 'pacman', - "pkg": 'zotero' + "pkg": 'zotero', }, "launcher": { "type": 'desktop', "cmd": 'zotero', - "default_port": None + "default_port": None, }, - "deps": [], - "description": 'Free reference management for researchers.', + "deps": [ + ], + "description": 'Academic citation and library management engine running natively to store reference papers.', "license": 'AGPL-3.0', "flags": { "has_cli": False, @@ -3805,7 +3456,7 @@ DEFAULT_REGISTRY: dict = { "is_ollama": False, "is_passive": False, "is_mcp": False, - "is_skills_collection": False + "is_skills_collection": False, } }, } diff --git a/src/ai_lsc/registry/layers/development.py b/src/ai_lsc/registry/layers/development.py index 308a1dd..f02a8f2 100755 --- a/src/ai_lsc/registry/layers/development.py +++ b/src/ai_lsc/registry/layers/development.py @@ -15,15 +15,19 @@ Each entry follows the standard registry schema: This module is consumed by :mod:`ai_lsc.registry.loader`. + +Structural fields (layer, level) follow the 10-Layer Systems +Architecture Taxonomy; tools may be regrouped across files in a +future pass — the loader merges by tool, not by filename. """ TOOLS: dict[str, dict] = { 'python': { "name": "Python Environment", "level": 2, - "layer": "Development Environment", - "role": "Build System", - "category": "Runtime", + "layer": 'Development Runtime & Environment', + "role": 'Runtime Environment', + "category": 'Runtime Environment', "installer": { "type": "pacman", "pkg": "python-pip" @@ -48,10 +52,10 @@ TOOLS: dict[str, dict] = { }, 'cupy': { "name": "CuPy", - "level": 2, - "layer": "Development Environment", - "role": "GPU Acceleration", - "category": "GPU Computing", + "level": 3, + "layer": 'GPU Acceleration & Optimization', + "role": 'GPU Computing', + "category": 'GPU Computing', "installer": { "type": "uv", "pkg": "cupy-cuda12x" @@ -79,9 +83,9 @@ TOOLS: dict[str, dict] = { 'fd': { "name": "fd", "level": 2, - "layer": "Development Environment", - "role": "Search", - "category": "Find Tool", + "layer": 'Development Runtime & Environment', + "role": 'File Discovery', + "category": 'File Discovery', "installer": { "type": "pacman", "pkg": "fd" @@ -107,9 +111,9 @@ TOOLS: dict[str, dict] = { 'ripgrep': { "name": "ripgrep (rg)", "level": 2, - "layer": "Development Environment", - "role": "Search", - "category": "Search Tool", + "layer": 'Development Runtime & Environment', + "role": 'Text Search', + "category": 'Text Search', "installer": { "type": "pacman", "pkg": "ripgrep" @@ -135,9 +139,9 @@ TOOLS: dict[str, dict] = { 'tree_sitter': { "name": "tree-sitter", "level": 2, - "layer": "Development Environment", - "role": "Parsing", - "category": "Parser", + "layer": 'Development Runtime & Environment', + "role": 'Parsing Engine', + "category": 'Parsing Engine', "installer": { "type": "uv", "pkg": "tree-sitter" @@ -163,9 +167,9 @@ TOOLS: dict[str, dict] = { 'sst': { "name": "SST (Serverless Stack)", "level": 2, - "layer": "Development Environment", - "role": "Full-Stack Framework", - "category": "Serverless Framework", + "layer": 'Development Runtime & Environment', + "role": 'Infrastructure as Code', + "category": 'Infrastructure as Code', "installer": { "type": "npm", "pkg": "sst" @@ -190,10 +194,10 @@ TOOLS: dict[str, dict] = { }, 'unsloth': { "name": "Unsloth", - "level": 2, - "layer": "Development Environment", - "role": "Training", - "category": "Model Training", + "level": 3, + "layer": 'GPU Acceleration & Optimization', + "role": 'Model Optimization', + "category": 'Model Optimization', "installer": { "type": "uv", "pkg": "unsloth" @@ -221,9 +225,9 @@ TOOLS: dict[str, dict] = { 'php': { "name": "PHP", "level": 2, - "layer": "Development Environment", - "role": "Language", - "category": "Runtime", + "layer": 'Development Runtime & Environment', + "role": 'Language', + "category": 'Runtime', "installer": { "type": "pacman", "pkg": "php" @@ -249,9 +253,9 @@ TOOLS: dict[str, dict] = { 'ruby': { "name": "Ruby", "level": 2, - "layer": "Development Environment", - "role": "Language", - "category": "Runtime", + "layer": 'Development Runtime & Environment', + "role": 'Language', + "category": 'Runtime', "installer": { "type": "pacman", "pkg": "ruby" @@ -277,9 +281,9 @@ TOOLS: dict[str, dict] = { 'perl': { "name": "Perl", "level": 2, - "layer": "Development Environment", - "role": "Language", - "category": "Runtime", + "layer": 'Development Runtime & Environment', + "role": 'Language', + "category": 'Runtime', "installer": { "type": "pacman", "pkg": "perl" @@ -305,9 +309,9 @@ TOOLS: dict[str, dict] = { 'julia': { "name": "Julia", "level": 2, - "layer": "Development Environment", - "role": "Language", - "category": "Runtime", + "layer": 'Development Runtime & Environment', + "role": 'Language', + "category": 'Runtime', "installer": { "type": "pacman", "pkg": "julia" @@ -333,9 +337,9 @@ TOOLS: dict[str, dict] = { 'nodejs': { "name": "Node.js", "level": 2, - "layer": "Development Environment", - "role": "Language", - "category": "Runtime", + "layer": 'Development Runtime & Environment', + "role": 'Language', + "category": 'Runtime', "installer": { "type": "pacman", "pkg": "nodejs" @@ -361,9 +365,9 @@ TOOLS: dict[str, dict] = { 'go': { "name": "Go", "level": 2, - "layer": "Development Environment", - "role": "Language", - "category": "Runtime", + "layer": 'Development Runtime & Environment', + "role": 'Language', + "category": 'Runtime', "installer": { "type": "pacman", "pkg": "go" @@ -389,9 +393,9 @@ TOOLS: dict[str, dict] = { 'rust': { "name": "Rust", "level": 2, - "layer": "Development Environment", - "role": "Language", - "category": "Runtime", + "layer": 'Development Runtime & Environment', + "role": 'Language', + "category": 'Runtime', "installer": { "type": "pacman", "pkg": "rust" @@ -417,9 +421,9 @@ TOOLS: dict[str, dict] = { 'java_jdk': { "name": "Java JDK", "level": 2, - "layer": "Development Environment", - "role": "Language", - "category": "Runtime", + "layer": 'Development Runtime & Environment', + "role": 'Language', + "category": 'Runtime', "installer": { "type": "pacman", "pkg": "jdk-openjdk" @@ -445,9 +449,9 @@ TOOLS: dict[str, dict] = { 'zsh': { "name": "Zsh", "level": 2, - "layer": "Development Environment", - "role": "Shell", - "category": "Shell", + "layer": 'Development Runtime & Environment', + "role": 'Shell', + "category": 'Shell', "installer": { "type": "pacman", "pkg": "zsh" @@ -473,9 +477,9 @@ TOOLS: dict[str, dict] = { 'mksh': { "name": "mksh", "level": 2, - "layer": "Development Environment", - "role": "Shell", - "category": "Shell", + "layer": 'Development Runtime & Environment', + "role": 'Shell', + "category": 'Shell', "installer": { "type": "pacman", "pkg": "mksh" @@ -501,9 +505,9 @@ TOOLS: dict[str, dict] = { 'bash': { "name": "Bash", "level": 2, - "layer": "Development Environment", - "role": "Shell", - "category": "Shell", + "layer": 'Development Runtime & Environment', + "role": 'Shell', + "category": 'Shell', "installer": { "type": "pacman", "pkg": "bash" @@ -529,9 +533,9 @@ TOOLS: dict[str, dict] = { 'fish': { "name": "Fish", "level": 2, - "layer": "Development Environment", - "role": "Shell", - "category": "Shell", + "layer": 'Development Runtime & Environment', + "role": 'Shell', + "category": 'Shell', "installer": { "type": "pacman", "pkg": "fish" @@ -557,9 +561,9 @@ TOOLS: dict[str, dict] = { 'fakeroot': { "name": "Fakeroot", "level": 2, - "layer": "Development Environment", - "role": "Build Tool", - "category": "Build", + "layer": 'Development Runtime & Environment', + "role": 'Build Tool', + "category": 'Build', "installer": { "type": "pacman", "pkg": "fakeroot" @@ -585,9 +589,9 @@ TOOLS: dict[str, dict] = { 'make': { "name": "GNU Make", "level": 2, - "layer": "Development Environment", - "role": "Build System", - "category": "Build", + "layer": 'Development Runtime & Environment', + "role": 'Build System', + "category": 'Build', "installer": { "type": "pacman", "pkg": "make" @@ -613,9 +617,9 @@ TOOLS: dict[str, dict] = { 'cmake': { "name": "CMake", "level": 2, - "layer": "Development Environment", - "role": "Build System", - "category": "Build", + "layer": 'Development Runtime & Environment', + "role": 'Build System', + "category": 'Build', "installer": { "type": "pacman", "pkg": "cmake" @@ -641,9 +645,9 @@ TOOLS: dict[str, dict] = { 'gcc': { "name": "GCC", "level": 2, - "layer": "Development Environment", - "role": "Compiler", - "category": "Build", + "layer": 'Development Runtime & Environment', + "role": 'Compiler', + "category": 'Build', "installer": { "type": "pacman", "pkg": "gcc" @@ -669,9 +673,9 @@ TOOLS: dict[str, dict] = { 'bison': { "name": "Bison", "level": 2, - "layer": "Development Environment", - "role": "Parser Generator", - "category": "Build", + "layer": 'Development Runtime & Environment', + "role": 'Parser Generator', + "category": 'Build', "installer": { "type": "pacman", "pkg": "bison" @@ -697,9 +701,9 @@ TOOLS: dict[str, dict] = { 'pkg_config': { "name": "pkg-config", "level": 2, - "layer": "Development Environment", - "role": "Build Tool", - "category": "Build", + "layer": 'Development Runtime & Environment', + "role": 'Build Tool', + "category": 'Build', "installer": { "type": "pacman", "pkg": "pkg-config" @@ -725,9 +729,9 @@ TOOLS: dict[str, dict] = { 'valgrind': { "name": "Valgrind", "level": 2, - "layer": "Development Environment", - "role": "Profiling", - "category": "Debugging", + "layer": 'Development Runtime & Environment', + "role": 'Profiling', + "category": 'Debugging', "installer": { "type": "pacman", "pkg": "valgrind" @@ -753,9 +757,9 @@ TOOLS: dict[str, dict] = { 'gdb': { "name": "GDB", "level": 2, - "layer": "Development Environment", - "role": "Debugger", - "category": "Debugging", + "layer": 'Development Runtime & Environment', + "role": 'Debugger', + "category": 'Debugging', "installer": { "type": "pacman", "pkg": "gdb" @@ -781,9 +785,9 @@ TOOLS: dict[str, dict] = { 'strace': { "name": "strace", "level": 2, - "layer": "Development Environment", - "role": "Tracing", - "category": "Debugging", + "layer": 'Development Runtime & Environment', + "role": 'Tracing', + "category": 'Debugging', "installer": { "type": "pacman", "pkg": "strace" @@ -809,9 +813,9 @@ TOOLS: dict[str, dict] = { 'ltrace': { "name": "ltrace", "level": 2, - "layer": "Development Environment", - "role": "Tracing", - "category": "Debugging", + "layer": 'Development Runtime & Environment', + "role": 'Tracing', + "category": 'Debugging', "installer": { "type": "pacman", "pkg": "ltrace" @@ -837,9 +841,9 @@ TOOLS: dict[str, dict] = { 'patchelf': { "name": "PatchELF", "level": 2, - "layer": "Development Environment", - "role": "Binary Tool", - "category": "Build", + "layer": 'Development Runtime & Environment', + "role": 'Binary Tool', + "category": 'Build', "installer": { "type": "pacman", "pkg": "patchelf" @@ -865,9 +869,9 @@ TOOLS: dict[str, dict] = { 'upx': { "name": "UPX", "level": 2, - "layer": "Development Environment", - "role": "Packer", - "category": "Build", + "layer": 'Development Runtime & Environment', + "role": 'Packer', + "category": 'Build', "installer": { "type": "pacman", "pkg": "upx" @@ -893,9 +897,9 @@ TOOLS: dict[str, dict] = { 'deno': { "name": "Deno", "level": 2, - "layer": "Development Environment", - "role": "Language", - "category": "Runtime", + "layer": 'Development Runtime & Environment', + "role": 'Language', + "category": 'Runtime', "installer": { "type": "pacman", "pkg": "deno" @@ -923,9 +927,9 @@ TOOLS: dict[str, dict] = { 'uv': { "name": "uv", "level": 2, - "layer": "Development Environment", - "role": "Package Manager", - "category": "Build", + "layer": 'Development Runtime & Environment', + "role": 'Package Manager', + "category": 'Build', "installer": { "type": "pacman", "pkg": "uv" diff --git a/src/ai_lsc/registry/layers/devops.py b/src/ai_lsc/registry/layers/devops.py index b124760..0a6346d 100755 --- a/src/ai_lsc/registry/layers/devops.py +++ b/src/ai_lsc/registry/layers/devops.py @@ -7,15 +7,19 @@ qwen_code, goose, zcoder). This module is consumed by :mod:`ai_lsc.registry.loader`. + +Structural fields (layer, level) follow the 10-Layer Systems +Architecture Taxonomy; tools may be regrouped across files in a +future pass — the loader merges by tool, not by filename. """ TOOLS: dict[str, dict] = { 'terraform': { "name": "Terraform", "level": 10, - "layer": "DevOps", - "role": "Infrastructure as Code", - "category": "IaC", + "layer": 'Human Interface & System Operations', + "role": 'Infrastructure Provision', + "category": 'Infrastructure Provision', "installer": { "type": "pacman", "pkg": "terraform" @@ -41,9 +45,9 @@ TOOLS: dict[str, dict] = { 'ansible': { "name": "Ansible", "level": 10, - "layer": "DevOps", - "role": "Configuration Management", - "category": "Config Management", + "layer": 'Human Interface & System Operations', + "role": 'Agentless Deployment', + "category": 'Agentless Deployment', "installer": { "type": "pacman", "pkg": "ansible" @@ -69,9 +73,9 @@ TOOLS: dict[str, dict] = { 'puppet': { "name": "Puppet", "level": 10, - "layer": "DevOps", - "role": "Configuration Management", - "category": "Config Management", + "layer": 'Human Interface & System Operations', + "role": 'System Auditor', + "category": 'System Auditor', "installer": { "type": "pacman", "pkg": "puppet" @@ -97,9 +101,9 @@ TOOLS: dict[str, dict] = { 'pulumi': { "name": "Pulumi", "level": 10, - "layer": "DevOps", - "role": "Infrastructure as Code", - "category": "IaC", + "layer": 'Human Interface & System Operations', + "role": 'Programmable IaC', + "category": 'Programmable IaC', "installer": { "type": "npm", "pkg": "@pulumi/pulumi" @@ -125,9 +129,9 @@ TOOLS: dict[str, dict] = { 'bicep': { "name": "Bicep", "level": 10, - "layer": "DevOps", - "role": "Infrastructure as Code", - "category": "IaC", + "layer": 'Human Interface & System Operations', + "role": 'Local Declarative DSL', + "category": 'Local Declarative DSL', "installer": { "type": "npm", "pkg": "@azure/bicep" @@ -153,12 +157,12 @@ TOOLS: dict[str, dict] = { 'opentofu': { "name": "OpenTofu", "level": 10, - "layer": "DevOps", - "role": "Infrastructure as Code", - "category": "IaC", + "layer": 'Human Interface & System Operations', + "role": 'Open-Source IaC', + "category": 'Open-Source IaC', "installer": { "type": "custom", - "pkg": "https://opentofu.org/docs/intro/install/" + "pkg": "https://github.com/opentofu/opentofu" }, "launcher": { "type": "desktop", @@ -181,9 +185,9 @@ TOOLS: dict[str, dict] = { 'aws_cdk': { "name": "AWS CDK", "level": 10, - "layer": "DevOps", - "role": "Infrastructure as Code", - "category": "IaC", + "layer": 'Human Interface & System Operations', + "role": 'Cloud Dev Kit', + "category": 'Cloud Dev Kit', "installer": { "type": "npm", "pkg": "aws-cdk" @@ -209,12 +213,12 @@ TOOLS: dict[str, dict] = { 'crossplane': { "name": "Crossplane", "level": 10, - "layer": "DevOps", - "role": "Infrastructure as Code", - "category": "IaC Control Plane", + "layer": 'Human Interface & System Operations', + "role": 'Infrastructure as Code', + "category": 'IaC Control Plane', "installer": { "type": "custom", - "pkg": "https://docs.crossplane.io/v2/getting-started/install/" + "pkg": "https://github.com/crossplane/crossplane" }, "launcher": { "type": "desktop", @@ -239,12 +243,12 @@ TOOLS: dict[str, dict] = { 'terragrunt': { "name": "Terragrunt", "level": 10, - "layer": "DevOps", - "role": "Infrastructure as Code", - "category": "IaC Wrapper", + "layer": 'Human Interface & System Operations', + "role": 'IaC DRY Wrapper', + "category": 'IaC DRY Wrapper', "installer": { "type": "custom", - "pkg": "https://terragrunt.gruntwork.io/docs/getting-started/install/" + "pkg": "https://github.com/gruntwork-io/terragrunt" }, "launcher": { "type": "desktop", @@ -268,10 +272,10 @@ TOOLS: dict[str, dict] = { }, 'stack_exporter': { "name": "Stack Container Packager", - "level": 10, - "layer": "DevOps", - "role": "Runtime Packaging", - "category": "OCI Export", + "level": 1, + "layer": 'Host Platform & Infrastructure', + "role": 'Runtime Packaging', + "category": 'Runtime Packaging', "installer": { "type": "pacman", "pkg": "podman" @@ -297,9 +301,9 @@ TOOLS: dict[str, dict] = { 'homelab': { "name": "Homelab", "level": 10, - "layer": "DevOps", - "role": "Provisioning", - "category": "Provisioning", + "layer": 'Human Interface & System Operations', + "role": 'Metal Provisioner', + "category": 'Metal Provisioner', "installer": { "type": "git", "pkg": "https://github.com/khuedoan/homelab", @@ -325,10 +329,10 @@ TOOLS: dict[str, dict] = { }, 'aider': { "name": "Aider", - "level": 10, - "layer": "DevOps", - "role": "Coding Agent", - "category": "AI Coding Agent", + "level": 7, + "layer": 'Agentic Software Engineering & Sandboxes', + "role": 'CLI Pair Programmer', + "category": 'CLI Pair Programmer', "installer": { "type": "uv", "pkg": "aider-chat" @@ -354,10 +358,10 @@ TOOLS: dict[str, dict] = { 'claude_code': { "name": "Claude Code", - "level": 10, - "layer": "DevOps", - "role": "Coding Agent", - "category": "AI Coding Agent", + "level": 7, + "layer": 'Agentic Software Engineering & Sandboxes', + "role": 'Terminal Coding Agent', + "category": 'Terminal Coding Agent', "installer": { "type": "npm", "pkg": "@anthropic-ai/claude-code" @@ -383,10 +387,10 @@ TOOLS: dict[str, dict] = { 'codex': { "name": "Codex", - "level": 10, - "layer": "DevOps", - "role": "Coding Agent", - "category": "AI Coding Agent", + "level": 7, + "layer": 'Agentic Software Engineering & Sandboxes', + "role": 'Codex Developer', + "category": 'Codex Developer', "installer": { "type": "npm", "pkg": "@openai/codex" @@ -412,13 +416,13 @@ TOOLS: dict[str, dict] = { 'openhands': { "name": "OpenHands", - "level": 10, - "layer": "DevOps", - "role": "Coding Agent", - "category": "AI Coding Agent", + "level": 7, + "layer": 'Agentic Software Engineering & Sandboxes', + "role": 'Sovereign Software Agent', + "category": 'Sovereign Software Agent', "installer": { - "type": "uv", - "pkg": "openhands-ai" + "type": "git_node", + "pkg": "https://github.com/All-Hands-AI/OpenHands.git" }, "launcher": { "type": "tmux", @@ -441,10 +445,10 @@ TOOLS: dict[str, dict] = { 'opencode': { "name": "OpenCode", - "level": 10, - "layer": "DevOps", - "role": "Coding Agent", - "category": "AI Coding Agent", + "level": 7, + "layer": 'Agentic Software Engineering & Sandboxes', + "role": 'Coding Agent', + "category": 'AI Coding Agent', "installer": { "type": "npm", "pkg": "opencode-ai" @@ -472,10 +476,10 @@ TOOLS: dict[str, dict] = { 'gemini_cli': { "name": "Gemini CLI", - "level": 10, - "layer": "DevOps", - "role": "Coding Agent", - "category": "AI Coding Agent", + "level": 7, + "layer": 'Agentic Software Engineering & Sandboxes', + "role": 'Coding Agent', + "category": 'AI Coding Agent', "installer": { "type": "npm", "pkg": "@google/gemini-cli" @@ -503,10 +507,10 @@ TOOLS: dict[str, dict] = { 'qwen_code': { "name": "Qwen Code", - "level": 10, - "layer": "DevOps", - "role": "Coding Agent", - "category": "AI Coding Agent", + "level": 7, + "layer": 'Agentic Software Engineering & Sandboxes', + "role": 'Coding Agent', + "category": 'AI Coding Agent', "installer": { "type": "npm", "pkg": "@qwen-code/qwen-code" @@ -534,10 +538,10 @@ TOOLS: dict[str, dict] = { 'goose': { "name": "codename goose", - "level": 10, - "layer": "DevOps", - "role": "Coding Agent", - "category": "AI Coding Agent", + "level": 7, + "layer": 'Agentic Software Engineering & Sandboxes', + "role": 'Coding Agent', + "category": 'AI Coding Agent', "installer": { "type": "custom", "pkg": "https://github.com/block/goose" @@ -566,10 +570,10 @@ TOOLS: dict[str, dict] = { # ---- zcoder ----------------------------------------------------------------- 'zcoder': { "name": "ZCoder", - "level": 10, - "layer": "DevOps", - "role": "Coding Agent", - "category": "AI Coding Agent", + "level": 7, + "layer": 'Agentic Software Engineering & Sandboxes', + "role": 'Coding Agent', + "category": 'AI Coding Agent', "installer": { "type": "npm", "pkg": "zcoder-cli" diff --git a/src/ai_lsc/registry/layers/gpu.py b/src/ai_lsc/registry/layers/gpu.py index d229d51..a4c6690 100755 --- a/src/ai_lsc/registry/layers/gpu.py +++ b/src/ai_lsc/registry/layers/gpu.py @@ -15,15 +15,19 @@ Each entry follows the standard registry schema: This module is consumed by :mod:`ai_lsc.registry.loader`. + +Structural fields (layer, level) follow the 10-Layer Systems +Architecture Taxonomy; tools may be regrouped across files in a +future pass — the loader merges by tool, not by filename. """ TOOLS: dict[str, dict] = { 'cuda': { "name": "CUDA Toolkit", "level": 3, - "layer": "GPU Runtimes", - "role": "Acceleration", - "category": "GPU", + "layer": 'GPU Acceleration & Optimization', + "role": 'Hardware Acceleration', + "category": 'Hardware Acceleration', "installer": { "type": "pacman", "pkg": "cuda" @@ -49,9 +53,9 @@ TOOLS: dict[str, dict] = { 'apex': { "name": "NVIDIA Apex", "level": 3, - "layer": "GPU Runtimes", - "role": "Optimization", - "category": "Mixed Precision", + "layer": 'GPU Acceleration & Optimization', + "role": 'Mixed Precision', + "category": 'Mixed Precision', "installer": { "type": "uv", "pkg": "apex" @@ -79,9 +83,9 @@ TOOLS: dict[str, dict] = { 'tinygrad': { "name": "tinygrad", "level": 3, - "layer": "GPU Runtimes", - "role": "GPU Acceleration", - "category": "GPU Computing", + "layer": 'GPU Acceleration & Optimization', + "role": 'GPU Acceleration', + "category": 'GPU Computing', "installer": { "type": "uv", "pkg": "tinygrad" diff --git a/src/ai_lsc/registry/layers/host_platform.py b/src/ai_lsc/registry/layers/host_platform.py index 52ebbf6..5281809 100755 --- a/src/ai_lsc/registry/layers/host_platform.py +++ b/src/ai_lsc/registry/layers/host_platform.py @@ -15,15 +15,19 @@ Each entry follows the standard registry schema: This module is consumed by :mod:`ai_lsc.registry.loader`. + +Structural fields (layer, level) follow the 10-Layer Systems +Architecture Taxonomy; tools may be regrouped across files in a +future pass — the loader merges by tool, not by filename. """ TOOLS: dict[str, dict] = { 'tmux': { "name": "Tmux", "level": 1, - "layer": "Host Platform", - "role": "Multiplexer", - "category": "Terminal", + "layer": 'Host Platform & Infrastructure', + "role": 'Multiplexer', + "category": 'Terminal', "installer": { "type": "pacman", "pkg": "tmux" @@ -48,10 +52,10 @@ TOOLS: dict[str, dict] = { }, 'git': { "name": "Git", - "level": 1, - "layer": "Host Platform", - "role": "Version Control", - "category": "VCS", + "level": 2, + "layer": 'Development Runtime & Environment', + "role": 'Version Control', + "category": 'VCS', "installer": { "type": "pacman", "pkg": "git" @@ -77,9 +81,9 @@ TOOLS: dict[str, dict] = { 'podman': { "name": "Podman", "level": 1, - "layer": "Host Platform", - "role": "Container Runtime", - "category": "Containers", + "layer": 'Host Platform & Infrastructure', + "role": 'Container Runtime', + "category": 'Containers', "installer": { "type": "pacman", "pkg": "podman" @@ -105,9 +109,9 @@ TOOLS: dict[str, dict] = { 'docker': { "name": "Docker", "level": 1, - "layer": "Host Platform", - "role": "Container Runtime", - "category": "Containers", + "layer": 'Host Platform & Infrastructure', + "role": 'Container Runtime', + "category": 'Containers', "installer": { "type": "pacman", "pkg": "docker" @@ -133,9 +137,9 @@ TOOLS: dict[str, dict] = { 'postgresql': { "name": "PostgreSQL", "level": 1, - "layer": "Host Platform", - "role": "Foundation", - "category": "Database", + "layer": 'Host Platform & Infrastructure', + "role": 'Database', + "category": 'Database', "installer": { "type": "pacman", "pkg": "postgresql" @@ -161,9 +165,9 @@ TOOLS: dict[str, dict] = { 'mariadb': { "name": "MariaDB", "level": 1, - "layer": "Host Platform", - "role": "Foundation", - "category": "Database", + "layer": 'Host Platform & Infrastructure', + "role": 'Database', + "category": 'Database', "installer": { "type": "pacman", "pkg": "mariadb" @@ -189,9 +193,9 @@ TOOLS: dict[str, dict] = { 'redis': { "name": "Redis", "level": 1, - "layer": "Host Platform", - "role": "Foundation", - "category": "Cache", + "layer": 'Host Platform & Infrastructure', + "role": 'Cache', + "category": 'Cache', "installer": { "type": "pacman", "pkg": "redis" @@ -217,9 +221,9 @@ TOOLS: dict[str, dict] = { 'sqlite3': { "name": "SQLite3", "level": 1, - "layer": "Host Platform", - "role": "Foundation", - "category": "Database", + "layer": 'Host Platform & Infrastructure', + "role": 'Database', + "category": 'Database', "installer": { "type": "pacman", "pkg": "sqlite" @@ -245,9 +249,9 @@ TOOLS: dict[str, dict] = { 'duckdb': { "name": "DuckDB", "level": 1, - "layer": "Host Platform", - "role": "Foundation", - "category": "Analytical Database", + "layer": 'Host Platform & Infrastructure', + "role": 'Analytical Database', + "category": 'Analytical Database', "installer": { "type": "uv", "pkg": "duckdb" @@ -273,9 +277,9 @@ TOOLS: dict[str, dict] = { 'lxc': { "name": "LXC", "level": 1, - "layer": "Host Platform", - "role": "Container Runtime", - "category": "Containers", + "layer": 'Host Platform & Infrastructure', + "role": 'Container Runtime', + "category": 'Containers', "installer": { "type": "pacman", "pkg": "lxc" @@ -301,9 +305,9 @@ TOOLS: dict[str, dict] = { 'firecracker': { "name": "Firecracker", "level": 1, - "layer": "Host Platform", - "role": "MicroVM", - "category": "Virtualization", + "layer": 'Host Platform & Infrastructure', + "role": 'MicroVM', + "category": 'Virtualization', "installer": { "type": "script", "cmd": "mkdir -p {tools_root}/bin {tools_root}/firecracker && FC_VER=$(curl -sIL https://github.com/firecracker-microvm/firecracker/releases/latest | grep -i '^location:' | tail -1 | sed 's|.*/tag/||' | tr -d '\r') && curl -fsSL 'https://github.com/firecracker-microvm/firecracker/releases/download/$FC_VER/firecracker-$FC_VER-x86_64.tgz' | tar xz -C {tools_root}/firecracker --strip-components=1 && ln -sf {tools_root}/firecracker/firecracker-$FC_VER-x86_64 {tools_root}/bin/firecracker && ln -sf {tools_root}/firecracker/jailer-$FC_VER-x86_64 {tools_root}/bin/jailer" @@ -329,9 +333,9 @@ TOOLS: dict[str, dict] = { 'qemu': { "name": "QEMU", "level": 1, - "layer": "Host Platform", - "role": "Emulation", - "category": "Virtualization", + "layer": 'Host Platform & Infrastructure', + "role": 'Emulation', + "category": 'Virtualization', "installer": { "type": "pacman", "pkg": "qemu-base" @@ -357,9 +361,9 @@ TOOLS: dict[str, dict] = { 'libvirt': { "name": "libvirt", "level": 1, - "layer": "Host Platform", - "role": "VM Management", - "category": "Virtualization", + "layer": 'Host Platform & Infrastructure', + "role": 'VM Management', + "category": 'Virtualization', "installer": { "type": "pacman", "pkg": "libvirt" @@ -385,9 +389,9 @@ TOOLS: dict[str, dict] = { 'cloudflared': { "name": "Cloudflared", "level": 1, - "layer": "Host Platform", - "role": "Tunnel", - "category": "Networking", + "layer": 'Host Platform & Infrastructure', + "role": 'Tunnel', + "category": 'Networking', "installer": { "type": "script", "cmd": "mkdir -p {tools_root}/bin && curl -L https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64 -o {tools_root}/bin/cloudflared && chmod +x {tools_root}/bin/cloudflared" @@ -413,9 +417,9 @@ TOOLS: dict[str, dict] = { 'nginx': { "name": "Nginx", "level": 1, - "layer": "Host Platform", - "role": "Reverse Proxy", - "category": "Networking", + "layer": 'Host Platform & Infrastructure', + "role": 'Reverse Proxy', + "category": 'Networking', "installer": { "type": "pacman", "pkg": "nginx" @@ -441,9 +445,9 @@ TOOLS: dict[str, dict] = { 'certbot': { "name": "Certbot", "level": 1, - "layer": "Host Platform", - "role": "TLS", - "category": "Networking", + "layer": 'Host Platform & Infrastructure', + "role": 'TLS', + "category": 'Networking', "installer": { "type": "pacman", "pkg": "certbot" diff --git a/src/ai_lsc/registry/layers/inference.py b/src/ai_lsc/registry/layers/inference.py index 9283483..f86a3bb 100755 --- a/src/ai_lsc/registry/layers/inference.py +++ b/src/ai_lsc/registry/layers/inference.py @@ -15,18 +15,23 @@ Each entry follows the standard registry schema: This module is consumed by :mod:`ai_lsc.registry.loader`. + +Structural fields (layer, level) follow the 10-Layer Systems +Architecture Taxonomy; tools may be regrouped across files in a +future pass — the loader merges by tool, not by filename. """ TOOLS: dict[str, dict] = { 'ollama': { "name": "Ollama", "level": 4, - "layer": "Engines", - "role": "Engine", - "category": "LLM Runtime", + "layer": 'Local Inference Engines', + "role": 'Local LLM Runner', + "category": 'Local LLM Runner', "installer": { "type": "script", - "cmd": "curl -fsSL https://ollama.com/install.sh | sh" + "cmd": "curl -fsSL https://ollama.com/install.sh | sh", + "pkg": "https://github.com/ollama/ollama" }, "launcher": { "type": "tmux", @@ -49,12 +54,12 @@ TOOLS: dict[str, dict] = { 'llamacpp': { "name": "llama.cpp", "level": 4, - "layer": "Engines", - "role": "Engine", - "category": "LLM Runtime", + "layer": 'Local Inference Engines', + "role": 'Native Inference', + "category": 'Native Inference', "installer": { "type": "git", - "pkg": "https://github.com/ggerganov/llama.cpp" + "pkg": "https://github.com/ggml-org/llama.cpp" }, "launcher": { "type": "tmux", @@ -77,9 +82,9 @@ TOOLS: dict[str, dict] = { 'koboldcpp': { "name": "KoboldCPP", "level": 4, - "layer": "Engines", - "role": "Engine", - "category": "LLM Runtime", + "layer": 'Local Inference Engines', + "role": 'GGUF Runtime', + "category": 'GGUF Runtime', "installer": { "type": "git", "pkg": "https://github.com/LostRuins/koboldcpp" @@ -105,12 +110,13 @@ TOOLS: dict[str, dict] = { 'llamafile': { "name": "Llamafile", "level": 4, - "layer": "Engines", - "role": "Engine", - "category": "Single-File LLM", + "layer": 'Local Inference Engines', + "role": 'Single-File Runtime', + "category": 'Single-File Runtime', "installer": { "type": "script", - "cmd": "mkdir -p {tools_root}/bin && curl -L https://github.com/Mozilla-Ocho/llamafile/releases/latest/download/llamafile -o {tools_root}/bin/llamafile && chmod +x {tools_root}/bin/llamafile" + "cmd": "mkdir -p {tools_root}/bin && curl -L https://github.com/Mozilla-Ocho/llamafile/releases/latest/download/llamafile -o {tools_root}/bin/llamafile && chmod +x {tools_root}/bin/llamafile", + "pkg": "https://github.com/Mozilla-Ocho/llamafile" }, "launcher": { "type": "desktop", @@ -133,12 +139,12 @@ TOOLS: dict[str, dict] = { 'turbollm': { "name": "TurboLLM", "level": 4, - "layer": "Engines", - "role": "Engine", - "category": "LLM Runtime", + "layer": 'Local Inference Engines', + "role": 'Performance Engine', + "category": 'Performance Engine', "installer": { "type": "git", - "pkg": "https://github.com/nicely-done/turbollm" + "pkg": "https://github.com/mohitsoni48/TurboLLM" }, "launcher": { "type": "tmux", @@ -163,12 +169,12 @@ TOOLS: dict[str, dict] = { 'airllm': { "name": "AirLLM", "level": 4, - "layer": "Engines", - "role": "Engine", - "category": "Efficient LLM", + "layer": 'Local Inference Engines', + "role": 'Layer-wise Inference', + "category": 'Layer-wise Inference', "installer": { "type": "git", - "pkg": "https://github.com/liguodongiot/llm-airforce" + "pkg": "https://github.com/lyogavin/airllm" }, "launcher": { "type": "tmux", @@ -193,12 +199,12 @@ TOOLS: dict[str, dict] = { 'locally_uncensored': { "name": "Locally-Uncensored", "level": 4, - "layer": "Engines", - "role": "Engine", - "category": "Uncensored Models", + "layer": 'Local Inference Engines', + "role": 'Model Curation', + "category": 'Model Curation', "installer": { "type": "git", - "pkg": "https://github.com/nicely-done/locally-uncensored" + "pkg": "https://github.com/PurpleDoubleD/locally-uncensored" }, "launcher": { "type": "desktop", @@ -223,9 +229,9 @@ TOOLS: dict[str, dict] = { 'heretic': { "name": "Heretic", "level": 4, - "layer": "Engines", - "role": "Abliteration", - "category": "Model Surgery", + "layer": 'Local Inference Engines', + "role": 'Model Surgery', + "category": 'Model Surgery', "installer": { "type": "git", "pkg": "https://github.com/p-e-w/heretic", @@ -254,9 +260,9 @@ TOOLS: dict[str, dict] = { 'vllm': { "name": "vLLM", "level": 4, - "layer": "Engines", - "role": "Engine", - "category": "LLM Serving", + "layer": 'Local Inference Engines', + "role": 'Datacenter Inference', + "category": 'Datacenter Inference', "installer": { "type": "uv", "pkg": "vllm" @@ -285,9 +291,9 @@ TOOLS: dict[str, dict] = { 'sglang': { "name": "SGLang", "level": 4, - "layer": "Engines", - "role": "Engine", - "category": "LLM Serving", + "layer": 'Local Inference Engines', + "role": 'Engine', + "category": 'LLM Serving', "installer": { "type": "uv", "pkg": "sglang" diff --git a/src/ai_lsc/registry/layers/knowledge_management.py b/src/ai_lsc/registry/layers/knowledge_management.py index 74e3048..10fa25f 100755 --- a/src/ai_lsc/registry/layers/knowledge_management.py +++ b/src/ai_lsc/registry/layers/knowledge_management.py @@ -5,15 +5,19 @@ data pipelines, memory systems, and knowledge management tools. This module is consumed by :mod:`ai_lsc.registry.loader`. + +Structural fields (layer, level) follow the 10-Layer Systems +Architecture Taxonomy; tools may be regrouped across files in a +future pass — the loader merges by tool, not by filename. """ TOOLS: dict[str, dict] = { 'zotero': { "name": "Zotero", - "level": 11, - "layer": "Knowledge Management", - "role": "Reference Manager", - "category": "Academic References", + "level": 10, + "layer": 'Human Interface & System Operations', + "role": 'Reference Manager', + "category": 'Reference Manager', "installer": { "type": "pacman", "pkg": "zotero" @@ -38,10 +42,10 @@ TOOLS: dict[str, dict] = { }, 'calibre': { "name": "Calibre", - "level": 11, - "layer": "Knowledge Management", - "role": "Library Manager", - "category": "Ebook Library", + "level": 10, + "layer": 'Human Interface & System Operations', + "role": 'Library Manager', + "category": 'Library Manager', "installer": { "type": "pacman", "pkg": "calibre" @@ -66,10 +70,10 @@ TOOLS: dict[str, dict] = { }, 'paperlessngx': { "name": "Paperless-ngx", - "level": 11, - "layer": "Knowledge Management", - "role": "Document Archive", - "category": "Document Management", + "level": 10, + "layer": 'Human Interface & System Operations', + "role": 'Document Archiver', + "category": 'Document Archiver', "installer": { "type": "git", "pkg": "https://github.com/paperless-ngx/paperless-ngx" @@ -97,10 +101,10 @@ TOOLS: dict[str, dict] = { }, 'logseq': { "name": "Logseq", - "level": 11, - "layer": "Knowledge Management", - "role": "Knowledge Graph", - "category": "Outliner", + "level": 10, + "layer": 'Human Interface & System Operations', + "role": 'Outliner Graph', + "category": 'Outliner Graph', "installer": { "type": "npm", "pkg": "logseq" @@ -125,10 +129,10 @@ TOOLS: dict[str, dict] = { }, 'joplin': { "name": "Joplin", - "level": 11, - "layer": "Knowledge Management", - "role": "Note Taking", - "category": "Notes", + "level": 10, + "layer": 'Human Interface & System Operations', + "role": 'Offline Journal', + "category": 'Offline Journal', "installer": { "type": "pacman", "pkg": "joplin" @@ -153,10 +157,10 @@ TOOLS: dict[str, dict] = { }, 'chromadb': { "name": "ChromaDB", - "level": 11, - "layer": "Knowledge Management", - "role": "Memory", - "category": "Vector Store", + "level": 8, + "layer": 'Decentralized Knowledge & Vector Stores', + "role": 'Vector Engine', + "category": 'Vector Engine', "installer": { "type": "uv", "pkg": "chromadb" @@ -181,10 +185,10 @@ TOOLS: dict[str, dict] = { }, 'lancedb': { "name": "LanceDB", - "level": 11, - "layer": "Knowledge Management", - "role": "Memory", - "category": "Vector Store", + "level": 8, + "layer": 'Decentralized Knowledge & Vector Stores', + "role": 'Serverless Database', + "category": 'Serverless Database', "installer": { "type": "uv", "pkg": "lancedb" @@ -209,13 +213,14 @@ TOOLS: dict[str, dict] = { }, 'qdrant': { "name": "Qdrant", - "level": 11, - "layer": "Knowledge Management", - "role": "Memory", - "category": "Vector Store", + "level": 8, + "layer": 'Decentralized Knowledge & Vector Stores', + "role": 'High-Performance Vector', + "category": 'High-Performance Vector', "installer": { "type": "script", - "cmd": "curl -L https://github.com/qdrant/qdrant/releases/latest/download/qdrant-x86_64-unknown-linux-musl.tar.gz | tar xz -C {tools_root}/qdrant && chmod +x {tools_root}/qdrant/qdrant" + "cmd": "curl -L https://github.com/qdrant/qdrant/releases/latest/download/qdrant-x86_64-unknown-linux-musl.tar.gz | tar xz -C {tools_root}/qdrant && chmod +x {tools_root}/qdrant/qdrant", + "pkg": "https://github.com/qdrant/qdrant" }, "launcher": { "type": "tmux", @@ -242,10 +247,10 @@ TOOLS: dict[str, dict] = { }, 'neo4j': { "name": "Neo4j", - "level": 11, - "layer": "Knowledge Management", - "role": "Memory", - "category": "Graph Database", + "level": 8, + "layer": 'Decentralized Knowledge & Vector Stores', + "role": 'Graph Database', + "category": 'Graph Database', "installer": { "type": "pacman", "pkg": "neo4j" @@ -270,10 +275,10 @@ TOOLS: dict[str, dict] = { }, 'elasticsearch': { "name": "Elasticsearch", - "level": 11, - "layer": "Knowledge Management", - "role": "Memory", - "category": "Search Engine", + "level": 8, + "layer": 'Decentralized Knowledge & Vector Stores', + "role": 'Distributed Search', + "category": 'Distributed Search', "installer": { "type": "pacman", "pkg": "elasticsearch" @@ -298,13 +303,14 @@ TOOLS: dict[str, dict] = { }, 'meilisearch': { "name": "Meilisearch", - "level": 11, - "layer": "Knowledge Management", - "role": "Memory", - "category": "Search Engine", + "level": 8, + "layer": 'Decentralized Knowledge & Vector Stores', + "role": 'Lexical Search', + "category": 'Lexical Search', "installer": { "type": "script", - "cmd": "mkdir -p {tools_root}/bin && cd {tools_root}/bin && curl -L https://install.meilisearch.com | sh" + "cmd": "mkdir -p {tools_root}/bin && cd {tools_root}/bin && curl -L https://install.meilisearch.com | sh", + "pkg": "https://github.com/meilisearch/meilisearch" }, "launcher": { "type": "tmux", @@ -326,10 +332,10 @@ TOOLS: dict[str, dict] = { }, 'graphrag': { "name": "GraphRAG", - "level": 11, - "layer": "Knowledge Management", - "role": "Knowledge Synthesis", - "category": "Graph RAG", + "level": 8, + "layer": 'Decentralized Knowledge & Vector Stores', + "role": 'Structured Synthesis', + "category": 'Structured Synthesis', "installer": { "type": "uv", "pkg": "graphrag" @@ -354,13 +360,13 @@ TOOLS: dict[str, dict] = { }, 'turbovec': { "name": "TurboVec", - "level": 11, - "layer": "Knowledge Management", - "role": "Embedding", - "category": "Vector Engine", + "level": 8, + "layer": 'Decentralized Knowledge & Vector Stores', + "role": 'Embedding', + "category": 'Vector Engine', "installer": { "type": "git", - "pkg": "https://github.com/nicely-done/turbovec" + "pkg": "https://github.com/ryancodrai/turbovec" }, "launcher": { "type": "tmux", @@ -384,13 +390,13 @@ TOOLS: dict[str, dict] = { }, 'airweave': { "name": "Airweave", - "level": 11, - "layer": "Knowledge Management", - "role": "Integration", - "category": "Data Sync", + "level": 9, + "layer": 'Data Extraction & Pipeline Harvest', + "role": 'Synchronization Layer', + "category": 'Synchronization Layer', "installer": { "type": "git", - "pkg": "https://github.com/nicely-done/airweave" + "pkg": "https://github.com/airweave-ai/airweave" }, "launcher": { "type": "tmux", @@ -412,10 +418,10 @@ TOOLS: dict[str, dict] = { }, 'crawl4ai': { "name": "Crawl4AI", - "level": 11, - "layer": "Knowledge Management", - "role": "Data Harvesting", - "category": "Web Crawler", + "level": 9, + "layer": 'Data Extraction & Pipeline Harvest', + "role": 'Web Scraper', + "category": 'Web Scraper', "installer": { "type": "uv", "pkg": "crawl4ai" @@ -440,10 +446,10 @@ TOOLS: dict[str, dict] = { }, 'docling': { "name": "Docling", - "level": 11, - "layer": "Knowledge Management", - "role": "Memory", - "category": "File Parsing", + "level": 9, + "layer": 'Data Extraction & Pipeline Harvest', + "role": 'Document Parser', + "category": 'Document Parser', "installer": { "type": "uv", "pkg": "docling" @@ -468,10 +474,10 @@ TOOLS: dict[str, dict] = { }, 'markitdown': { "name": "MarkItDown", - "level": 11, - "layer": "Knowledge Management", - "role": "File Parsing", - "category": "Document Converter", + "level": 9, + "layer": 'Data Extraction & Pipeline Harvest', + "role": 'Markdown Converter', + "category": 'Markdown Converter', "installer": { "type": "uv", "pkg": "markitdown" @@ -496,13 +502,13 @@ TOOLS: dict[str, dict] = { }, 'opendataloader': { "name": "OpenDataLoader", - "level": 11, - "layer": "Knowledge Management", - "role": "Ingestion", - "category": "Data Pipeline", + "level": 9, + "layer": 'Data Extraction & Pipeline Harvest', + "role": 'Data Ingest', + "category": 'Data Ingest', "installer": { "type": "git", - "pkg": "https://github.com/nicely-done/opendataloader" + "pkg": "https://github.com/opendataloader-project/opendataloader-pdf" }, "launcher": { "type": "desktop", @@ -524,10 +530,10 @@ TOOLS: dict[str, dict] = { }, 'whisper': { "name": "Whisper", - "level": 11, - "layer": "Knowledge Management", - "role": "Memory", - "category": "Audio Parsing", + "level": 9, + "layer": 'Data Extraction & Pipeline Harvest', + "role": 'Audio Extraction', + "category": 'Audio Extraction', "installer": { "type": "uv", "pkg": "openai-whisper" @@ -552,10 +558,10 @@ TOOLS: dict[str, dict] = { }, 'mnemosyne': { "name": "Mnemosyne", - "level": 11, - "layer": "Knowledge Management", - "role": "Memory", - "category": "Spaced Repetition", + "level": 10, + "layer": 'Human Interface & System Operations', + "role": 'Learning Cards', + "category": 'Learning Cards', "installer": { "type": "pipx", "pkg": "mnemosyne" @@ -580,13 +586,13 @@ TOOLS: dict[str, dict] = { }, 'mnemo_cortex': { "name": "Mnemo Cortex", - "level": 11, - "layer": "Knowledge Management", - "role": "Memory", - "category": "Cortex Memory", + "level": 8, + "layer": 'Decentralized Knowledge & Vector Stores', + "role": 'Memory', + "category": 'Cortex Memory', "installer": { "type": "git", - "pkg": "https://github.com/nicely-done/mnemo-cortex" + "pkg": "https://github.com/GuyMannDude/mnemo-cortex" }, "launcher": { "type": "tmux", @@ -610,13 +616,13 @@ TOOLS: dict[str, dict] = { }, 'everos_memory': { "name": "EverOS Memory", - "level": 11, - "layer": "Knowledge Management", - "role": "Memory", - "category": "Persistent Memory", + "level": 8, + "layer": 'Decentralized Knowledge & Vector Stores', + "role": 'Memory', + "category": 'Persistent Memory', "installer": { "type": "git", - "pkg": "https://github.com/nicely-done/everos-memory" + "pkg": "https://github.com/EverMind-AI/EverOS" }, "launcher": { "type": "tmux", @@ -638,13 +644,13 @@ TOOLS: dict[str, dict] = { }, 'mirofish': { "name": "Mirofish", - "level": 11, - "layer": "Knowledge Management", - "role": "Transform", - "category": "Data Pipeline", + "level": 9, + "layer": 'Data Extraction & Pipeline Harvest', + "role": 'ETL Transformation', + "category": 'ETL Transformation', "installer": { "type": "git", - "pkg": "https://github.com/nicely-done/mirofish" + "pkg": "https://github.com/666ghj/MiroFish" }, "launcher": { "type": "desktop", @@ -666,13 +672,13 @@ TOOLS: dict[str, dict] = { }, 'opendataloader_pdf': { "name": "OpenDataLoader PDF", - "level": 11, - "layer": "Knowledge Management", - "role": "Extraction", - "category": "PDF Pipeline", + "level": 9, + "layer": 'Data Extraction & Pipeline Harvest', + "role": 'PDF Processing', + "category": 'PDF Processing', "installer": { "type": "git", - "pkg": "https://github.com/nicely-done/opendataloader-pdf" + "pkg": "https://github.com/opendataloader-project/opendataloader-pdf" }, "launcher": { "type": "desktop", @@ -694,13 +700,13 @@ TOOLS: dict[str, dict] = { }, 'understand_anything': { "name": "Understand Anything", - "level": 11, - "layer": "Knowledge Management", - "role": "Comprehension", - "category": "Document Understanding", + "level": 9, + "layer": 'Data Extraction & Pipeline Harvest', + "role": 'Document Comprehension', + "category": 'Document Comprehension', "installer": { "type": "git", - "pkg": "https://github.com/nicely-done/understand-anything" + "pkg": "https://github.com/Egonex-AI/Understand-Anything" }, "launcher": { "type": "desktop", @@ -724,10 +730,10 @@ TOOLS: dict[str, dict] = { }, 'mem0': { "name": "Mem0", - "level": 11, - "layer": "Knowledge Management", - "role": "Memory", - "category": "Memory System", + "level": 8, + "layer": 'Decentralized Knowledge & Vector Stores', + "role": 'Memory', + "category": 'Memory System', "installer": { "type": "uv", "pkg": "mem0ai" diff --git a/src/ai_lsc/registry/layers/observability.py b/src/ai_lsc/registry/layers/observability.py index 64649e5..40c5101 100755 --- a/src/ai_lsc/registry/layers/observability.py +++ b/src/ai_lsc/registry/layers/observability.py @@ -5,15 +5,19 @@ evaluation, and build/system monitoring tools. This module is consumed by :mod:`ai_lsc.registry.loader`. + +Structural fields (layer, level) follow the 10-Layer Systems +Architecture Taxonomy; tools may be regrouped across files in a +future pass — the loader merges by tool, not by filename. """ TOOLS: dict[str, dict] = { 'btop': { "name": "Btop", - "level": 8, - "layer": "Observability", - "role": "Dashboard", - "category": "Metrics", + "level": 10, + "layer": 'Human Interface & System Operations', + "role": 'Dashboard', + "category": 'Metrics', "installer": { "type": "pacman", "pkg": "btop" @@ -38,10 +42,10 @@ TOOLS: dict[str, dict] = { }, 'glances': { "name": "Glances", - "level": 8, - "layer": "Observability", - "role": "Dashboard", - "category": "Metrics", + "level": 10, + "layer": 'Human Interface & System Operations', + "role": 'Telemetry Monitor', + "category": 'Telemetry Monitor', "installer": { "type": "pacman", "pkg": "glances" @@ -66,10 +70,10 @@ TOOLS: dict[str, dict] = { }, 'prometheus': { "name": "Prometheus", - "level": 8, - "layer": "Observability", - "role": "Metrics Collector", - "category": "Metrics", + "level": 10, + "layer": 'Human Interface & System Operations', + "role": 'Metric Scraper', + "category": 'Metric Scraper', "installer": { "type": "pacman", "pkg": "prometheus" @@ -94,10 +98,10 @@ TOOLS: dict[str, dict] = { }, 'grafana': { "name": "Grafana", - "level": 8, - "layer": "Observability", - "role": "Dashboard", - "category": "Visualization", + "level": 10, + "layer": 'Human Interface & System Operations', + "role": 'Telemetry Visualizer', + "category": 'Telemetry Visualizer', "installer": { "type": "pacman", "pkg": "grafana" @@ -122,13 +126,14 @@ TOOLS: dict[str, dict] = { }, 'grafana_alloy': { "name": "Grafana Alloy", - "level": 8, - "layer": "Observability", - "role": "Collector", - "category": "Telemetry", + "level": 10, + "layer": 'Human Interface & System Operations', + "role": 'Alloy Telemetry', + "category": 'Alloy Telemetry', "installer": { "type": "script", - "cmd": "mkdir -p {tools_root}/bin {tools_root}/alloy && curl -fsSL https://github.com/grafana/alloy/releases/latest/download/alloy-linux-amd64.zip -o {tools_root}/alloy/alloy.zip && python3 -m zipfile -e {tools_root}/alloy/alloy.zip {tools_root}/alloy && mv {tools_root}/alloy/alloy-linux-amd64 {tools_root}/bin/alloy && chmod +x {tools_root}/bin/alloy" + "cmd": "mkdir -p {tools_root}/bin {tools_root}/alloy && curl -fsSL https://github.com/grafana/alloy/releases/latest/download/alloy-linux-amd64.zip -o {tools_root}/alloy/alloy.zip && python3 -m zipfile -e {tools_root}/alloy/alloy.zip {tools_root}/alloy && mv {tools_root}/alloy/alloy-linux-amd64 {tools_root}/bin/alloy && chmod +x {tools_root}/bin/alloy", + "pkg": "https://github.com/grafana/alloy" }, "launcher": { "type": "tmux", @@ -152,10 +157,10 @@ TOOLS: dict[str, dict] = { }, 'opik': { "name": "Opik", - "level": 8, - "layer": "Observability", - "role": "LLM Tracing", - "category": "AI Observability", + "level": 10, + "layer": 'Human Interface & System Operations', + "role": 'LLM Observability', + "category": 'LLM Observability', "installer": { "type": "uv", "pkg": "opik" @@ -180,13 +185,13 @@ TOOLS: dict[str, dict] = { }, 'pulse_ai': { "name": "Pulse AI", - "level": 8, - "layer": "Observability", - "role": "Health Monitor", - "category": "AI Monitoring", + "level": 10, + "layer": 'Human Interface & System Operations', + "role": 'Auto Recovery Daemon', + "category": 'Auto Recovery Daemon', "installer": { "type": "git", - "pkg": "https://github.com/nicely-done/pulse-ai" + "pkg": "https://github.com/glieai/pulse-ai" }, "launcher": { "type": "tmux", @@ -208,13 +213,13 @@ TOOLS: dict[str, dict] = { }, 'latitude': { "name": "Latitude", - "level": 8, - "layer": "Observability", - "role": "Evaluation", - "category": "LLM Evaluation", + "level": 10, + "layer": 'Human Interface & System Operations', + "role": 'Output Evaluator', + "category": 'Output Evaluator', "installer": { "type": "git", - "pkg": "https://github.com/nicely-done/latitude" + "pkg": "https://github.com/latitude-dev/latitude-llm" }, "launcher": { "type": "tmux", @@ -238,13 +243,13 @@ TOOLS: dict[str, dict] = { }, 'eagle_eye': { "name": "Eagle Eye", - "level": 8, - "layer": "Observability", - "role": "Monitoring", - "category": "Observability", + "level": 10, + "layer": 'Human Interface & System Operations', + "role": 'Monitoring', + "category": 'Observability', "installer": { "type": "git", - "pkg": "https://github.com/nicely-done/eagle_eye" + "pkg": "https://github.com/thoughtfuldev/eagleeye" }, "launcher": { "type": "desktop", @@ -267,13 +272,13 @@ TOOLS: dict[str, dict] = { 'dma': { "name": "DMA (Distcc Monitor Agent)", - "level": 8, - "layer": "Observability", - "role": "Monitoring", - "category": "Build Monitoring", + "level": 2, + "layer": 'Development Runtime & Environment', + "role": 'Monitoring', + "category": 'Build Monitoring', "installer": { "type": "git", - "pkg": "https://github.com/distcc/dma" + "pkg": "https://github.com/distcc/distcc" }, "launcher": { "type": "desktop", diff --git a/src/ai_lsc/registry/layers/orchestrators.py b/src/ai_lsc/registry/layers/orchestrators.py index b683fa1..8a0886d 100755 --- a/src/ai_lsc/registry/layers/orchestrators.py +++ b/src/ai_lsc/registry/layers/orchestrators.py @@ -7,15 +7,19 @@ coding agents to DevOps in the 11-layer taxonomy.) This module is consumed by :mod:`ai_lsc.registry.loader`. + +Structural fields (layer, level) follow the 10-Layer Systems +Architecture Taxonomy; tools may be regrouped across files in a +future pass — the loader merges by tool, not by filename. """ TOOLS: dict[str, dict] = { 'distcc': { "name": "DistCC", - "level": 6, - "layer": "Orchestrators", - "role": "Distribution", - "category": "Distributed Compilation", + "level": 2, + "layer": 'Development Runtime & Environment', + "role": 'Distribution', + "category": 'Distributed Compilation', "installer": { "type": "pacman", "pkg": "distcc" @@ -41,9 +45,9 @@ TOOLS: dict[str, dict] = { 'ray': { "name": "Ray", "level": 6, - "layer": "Orchestrators", - "role": "Scaling", - "category": "Distributed Compute", + "layer": 'Multi-Agent Orchestration Runtimes', + "role": 'Scaling', + "category": 'Distributed Compute', "installer": { "type": "uv", "pkg": "ray" @@ -68,10 +72,10 @@ TOOLS: dict[str, dict] = { }, 'pssh': { "name": "PSSH (Parallel SSH)", - "level": 6, - "layer": "Orchestrators", - "role": "Coordination", - "category": "Cluster SSH", + "level": 10, + "layer": 'Human Interface & System Operations', + "role": 'Coordination', + "category": 'Cluster SSH', "installer": { "type": "pacman", "pkg": "pssh" @@ -97,9 +101,9 @@ TOOLS: dict[str, dict] = { 'langchain': { "name": "LangChain", "level": 6, - "layer": "Orchestrators", - "role": "Orchestration", - "category": "LLM Framework", + "layer": 'Multi-Agent Orchestration Runtimes', + "role": 'Integration Library', + "category": 'Integration Library', "installer": { "type": "uv", "pkg": "langchain" @@ -124,10 +128,10 @@ TOOLS: dict[str, dict] = { }, 'langflow': { "name": "LangFlow", - "level": 6, - "layer": "Orchestrators", - "role": "Visual Builder", - "category": "Workflow", + "level": 10, + "layer": 'Human Interface & System Operations', + "role": 'RAG Flow Canvas', + "category": 'RAG Flow Canvas', "installer": { "type": "uv", "pkg": "langflow" @@ -153,9 +157,9 @@ TOOLS: dict[str, dict] = { 'crewai': { "name": "CrewAI", "level": 6, - "layer": "Orchestrators", - "role": "Brain", - "category": "Agent Workflow", + "layer": 'Multi-Agent Orchestration Runtimes', + "role": 'Role-Playing Agent', + "category": 'Role-Playing Agent', "installer": { "type": "uv", "pkg": "crewai" @@ -181,9 +185,9 @@ TOOLS: dict[str, dict] = { 'autogen': { "name": "AutoGen", "level": 6, - "layer": "Orchestrators", - "role": "Brain", - "category": "Agent Workflow", + "layer": 'Multi-Agent Orchestration Runtimes', + "role": 'Multi-Agent Framework', + "category": 'Multi-Agent Framework', "installer": { "type": "uv", "pkg": "pyautogen" @@ -209,9 +213,9 @@ TOOLS: dict[str, dict] = { 'openai_swarm': { "name": "OpenAI Swarm", "level": 6, - "layer": "Orchestrators", - "role": "Multi-Agent", - "category": "Agent Framework", + "layer": 'Multi-Agent Orchestration Runtimes', + "role": 'Stateless Orchestration', + "category": 'Stateless Orchestration', "installer": { "type": "uv", "pkg": "swarm" @@ -237,12 +241,12 @@ TOOLS: dict[str, dict] = { 'agno': { "name": "Agno", "level": 6, - "layer": "Orchestrators", - "role": "Agent Framework", - "category": "AI Agent", + "layer": 'Multi-Agent Orchestration Runtimes', + "role": 'Production Multi-Agent', + "category": 'Production Multi-Agent', "installer": { - "type": "uv", - "pkg": "agno" + "type": "git", + "pkg": "https://github.com/agno-agi/agno" }, "launcher": { "type": "desktop", @@ -265,9 +269,9 @@ TOOLS: dict[str, dict] = { 'nvidia_agent_skills': { "name": "NVIDIA Agent Skills", "level": 6, - "layer": "Orchestrators", - "role": "Tool Integration", - "category": "Agent Toolkit", + "layer": 'Multi-Agent Orchestration Runtimes', + "role": 'Tool Integration', + "category": 'Agent Toolkit', "installer": { "type": "git", "pkg": "https://github.com/NVIDIA/agent-skills" @@ -295,12 +299,12 @@ TOOLS: dict[str, dict] = { 'openbrain': { "name": "OpenBrain", "level": 6, - "layer": "Orchestrators", - "role": "Brain", - "category": "Reasoning Engine", + "layer": 'Multi-Agent Orchestration Runtimes', + "role": 'Brain', + "category": 'Reasoning Engine', "installer": { "type": "git", - "pkg": "https://github.com/nicely-done/openbrain" + "pkg": "https://github.com/NateBJones-Projects/OB1" }, "launcher": { "type": "tmux", @@ -325,9 +329,9 @@ TOOLS: dict[str, dict] = { 'odysseus': { "name": "Odysseus", "level": 6, - "layer": "Orchestrators", - "role": "Reasoning", - "category": "Agent Workflow", + "layer": 'Multi-Agent Orchestration Runtimes', + "role": 'Reasoning', + "category": 'Agent Workflow', "installer": { "type": "uv", "pkg": "odysseus" @@ -340,7 +344,12 @@ TOOLS: dict[str, dict] = { "deps": [ "ollama" ], - "description": "Local reasoning and orchestration agent.", + "filesystem": { + "install": "tools/odysseus", + "config": "configs/odysseus", + "logs": "logs/odysseus", + }, +"description": "Local reasoning and orchestration agent.", "license": 'MIT', "flags": { "has_cli": False, @@ -354,10 +363,10 @@ TOOLS: dict[str, dict] = { }, 'n8n': { "name": "n8n", - "level": 6, - "layer": "Orchestrators", - "role": "Workflow Orchestrator", - "category": "Workflow Automation", + "level": 10, + "layer": 'Human Interface & System Operations', + "role": 'Workflow Orchestrator', + "category": 'Workflow', "installer": { "type": "npm", "pkg": "n8n", @@ -371,7 +380,12 @@ TOOLS: dict[str, dict] = { "default_port": 5678 }, "deps": [], - "description": "Ops-oriented workflow automation for multi-step agent orchestration beyond single-turn tool calls.", + "filesystem": { + "install": "tools/n8n", + "data": "workspaces/n8n", + "logs": "logs/n8n", + }, +"description": "Ops-oriented workflow automation for multi-step agent orchestration beyond single-turn tool calls.", "license": 'Sustainable-Use', "flags": { "has_cli": True, @@ -385,13 +399,14 @@ TOOLS: dict[str, dict] = { }, 'fabric': { "name": "Fabric", - "level": 6, - "layer": "Orchestrators", - "role": "Curation", - "category": "AI Augmentation", + "level": 5, + "layer": 'Intelligent API Routers & Proxies', + "role": 'Curation Pipeline', + "category": 'Curation Pipeline', "installer": { "type": "script", - "cmd": "curl -L https://github.com/danielmiessler/fabric/releases/latest/download/fabric-linux-amd64 > {tools_root}/bin/fabric && chmod +x {tools_root}/bin/fabric" + "cmd": "curl -L https://github.com/danielmiessler/fabric/releases/latest/download/fabric-linux-amd64 > {tools_root}/bin/fabric && chmod +x {tools_root}/bin/fabric", + "pkg": "https://github.com/danielmiessler/fabric" }, "launcher": { "type": "tmux", @@ -416,9 +431,9 @@ TOOLS: dict[str, dict] = { 'synapscli': { "name": "SynapsCLI", "level": 6, - "layer": "Orchestrators", - "role": "Agent", - "category": "AI Agent", + "layer": 'Multi-Agent Orchestration Runtimes', + "role": 'Terminal Agent', + "category": 'Terminal Agent', "installer": { "type": "git", "pkg": "https://github.com/HaseebKhalid1507/SynapsCLI", @@ -445,12 +460,12 @@ TOOLS: dict[str, dict] = { 'hivemind': { "name": "HiveMind", "level": 6, - "layer": "Orchestrators", - "role": "Coordination", - "category": "Multi-Agent", + "layer": 'Multi-Agent Orchestration Runtimes', + "role": 'Coordination Protocol', + "category": 'Coordination Protocol', "installer": { "type": "git", - "pkg": "https://github.com/nicely-done/hivemind" + "pkg": "https://github.com/hivementality-ai/hivemind" }, "launcher": { "type": "tmux", @@ -475,9 +490,9 @@ TOOLS: dict[str, dict] = { 'hermes_agent': { "name": "Hermes Agent", "level": 6, - "layer": "Orchestrators", - "role": "Agent", - "category": "AI Agent", + "layer": 'Multi-Agent Orchestration Runtimes', + "role": 'Agent Daemon', + "category": 'Agent Daemon', "installer": { "type": "npm", "pkg": "hermes-agent" @@ -505,12 +520,12 @@ TOOLS: dict[str, dict] = { 'agentic_os': { "name": "Agentic OS", "level": 6, - "layer": "Orchestrators", - "role": "Hands", - "category": "Agent OS", + "layer": 'Multi-Agent Orchestration Runtimes', + "role": 'Agent Shell', + "category": 'Agent Shell', "installer": { "type": "git", - "pkg": "https://github.com/nicely-done/agentic-os" + "pkg": "https://github.com/aporb/agentic-os" }, "launcher": { "type": "tmux", @@ -534,10 +549,10 @@ TOOLS: dict[str, dict] = { }, 'mcp_drift_state_tracker': { "name": "MCP Drift State Tracker", - "level": 6, - "layer": "Orchestrators", - "role": "Code Audit", - "category": "MCP Server", + "level": 7, + "layer": 'Agentic Software Engineering & Sandboxes', + "role": 'Context Integrity Core', + "category": 'Context Integrity Core', "installer": { "type": "git_node", "pkg": "https://git.dcos.net/dcosnet/MCP-Drift-State-Tracker.git", @@ -565,12 +580,12 @@ TOOLS: dict[str, dict] = { 'glassmind': { "name": "GlassMind", "level": 6, - "layer": "Orchestrators", - "role": "Reasoning", - "category": "Reasoning Engine", + "layer": 'Multi-Agent Orchestration Runtimes', + "role": 'Reasoning', + "category": 'Reasoning Engine', "installer": { "type": "git", - "pkg": "https://github.com/nicely-done/glassmind" + "pkg": "https://github.com/khodges42/glassMind" }, "launcher": { "type": "tmux", @@ -595,9 +610,9 @@ TOOLS: dict[str, dict] = { 'honcho': { "name": "Honcho", "level": 6, - "layer": "Orchestrators", - "role": "Process Manager", - "category": "Workflow Automation", + "layer": 'Multi-Agent Orchestration Runtimes', + "role": 'Process Manager', + "category": 'Workflow Automation', "installer": { "type": "uv", "pkg": "honcho" @@ -622,10 +637,10 @@ TOOLS: dict[str, dict] = { }, 'graphify': { "name": "Graphify", - "level": 6, - "layer": "Orchestrators", - "role": "Knowledge Graph Builder", - "category": "Claude Code Skill", + "level": 7, + "layer": 'Agentic Software Engineering & Sandboxes', + "role": 'Knowledge Graph Builder', + "category": 'Claude Code Skill', "installer": { "type": "uv", "pkg": "graphifyy" @@ -661,12 +676,12 @@ TOOLS: dict[str, dict] = { 'headroom': { "name": "Headroom", "level": 6, - "layer": "Orchestrators", - "role": "Resource Manager", - "category": "Infrastructure", + "layer": 'Multi-Agent Orchestration Runtimes', + "role": 'Resource Manager', + "category": 'Infrastructure', "installer": { "type": "git", - "pkg": "https://github.com/nicely-done/headroom" + "pkg": "https://github.com/headroomlabs-ai/headroom" }, "launcher": { "type": "desktop", @@ -688,13 +703,13 @@ TOOLS: dict[str, dict] = { }, 'loop_engineering': { "name": "Loop Engineering", - "level": 6, - "layer": "Orchestrators", - "role": "Engineering Loop", - "category": "Workflow Automation", + "level": 7, + "layer": 'Agentic Software Engineering & Sandboxes', + "role": 'CI/CD Orchestration', + "category": 'CI/CD Orchestration', "installer": { "type": "git", - "pkg": "https://github.com/nicely-done/loop_engineering" + "pkg": "https://github.com/lcajigasm/loop-engineering" }, "launcher": { "type": "desktop", @@ -717,12 +732,12 @@ TOOLS: dict[str, dict] = { 'nightshift': { "name": "Nightshift", "level": 6, - "layer": "Orchestrators", - "role": "Night Ops", - "category": "Workflow Automation", + "layer": 'Multi-Agent Orchestration Runtimes', + "role": 'Night Ops', + "category": 'Workflow Automation', "installer": { "type": "git", - "pkg": "https://github.com/nicely-done/nightshift" + "pkg": "https://github.com/johndaskovsky/nightshift" }, "launcher": { "type": "desktop", @@ -744,13 +759,13 @@ TOOLS: dict[str, dict] = { }, 'opensandbox': { "name": "OpenSandbox", - "level": 6, - "layer": "Orchestrators", - "role": "Sandbox", - "category": "Container Ops", + "level": 1, + "layer": 'Host Platform & Infrastructure', + "role": 'Isolation', + "category": 'Isolation', "installer": { "type": "git", - "pkg": "https://github.com/nicely-done/opensandbox" + "pkg": "https://github.com/opensandbox-group/OpenSandbox" }, "launcher": { "type": "desktop", @@ -772,13 +787,13 @@ TOOLS: dict[str, dict] = { }, 'ponytail': { "name": "Ponytail", - "level": 6, - "layer": "Orchestrators", - "role": "CI/CD", - "category": "Workflow Automation", + "level": 7, + "layer": 'Agentic Software Engineering & Sandboxes', + "role": 'Code Refactoring', + "category": 'Code Refactoring', "installer": { "type": "git", - "pkg": "https://github.com/nicely-done/ponytail" + "pkg": "https://github.com/DietrichGebert/ponytail" }, "launcher": { "type": "desktop", @@ -800,13 +815,13 @@ TOOLS: dict[str, dict] = { }, 'promptops': { "name": "PromptOps", - "level": 6, - "layer": "Orchestrators", - "role": "Prompt Ops", - "category": "AI Agent", + "level": 7, + "layer": 'Agentic Software Engineering & Sandboxes', + "role": 'Prompt Tester', + "category": 'Prompt Tester', "installer": { "type": "git", - "pkg": "https://github.com/nicely-done/promptops" + "pkg": "https://github.com/llmhq-hub/promptops" }, "launcher": { "type": "desktop", @@ -829,12 +844,12 @@ TOOLS: dict[str, dict] = { 'agent_reach': { "name": "Agent Reach", "level": 6, - "layer": "Orchestrators", - "role": "Agent Discovery", - "category": "Multi-Agent", + "layer": 'Multi-Agent Orchestration Runtimes', + "role": 'Agent Discovery', + "category": 'Multi-Agent', "installer": { "type": "git", - "pkg": "https://github.com/nicely-done/agent_reach" + "pkg": "https://github.com/Panniantong/Agent-Reach" }, "launcher": { "type": "desktop", @@ -857,12 +872,12 @@ TOOLS: dict[str, dict] = { 'algory': { "name": "Algory", "level": 6, - "layer": "Orchestrators", - "role": "Algorithm", - "category": "AI Agent", + "layer": 'Multi-Agent Orchestration Runtimes', + "role": 'Algorithm', + "category": 'AI Agent', "installer": { "type": "git", - "pkg": "https://github.com/nicely-done/algory" + "pkg": "https://github.com/aryaghan-mutum/algory" }, "launcher": { "type": "desktop", @@ -885,12 +900,12 @@ TOOLS: dict[str, dict] = { 'atlas_os': { "name": "Atlas OS", "level": 6, - "layer": "Orchestrators", - "role": "OS Framework", - "category": "Agent OS", + "layer": 'Multi-Agent Orchestration Runtimes', + "role": 'OS Framework', + "category": 'Agent OS', "installer": { "type": "git", - "pkg": "https://github.com/nicely-done/atlas_os" + "pkg": "https://github.com/atlas-os/atlas" }, "launcher": { "type": "desktop", @@ -912,13 +927,13 @@ TOOLS: dict[str, dict] = { }, 'career_ops': { "name": "Career Ops", - "level": 6, - "layer": "Orchestrators", - "role": "Career Ops", - "category": "Workflow Automation", + "level": 10, + "layer": 'Human Interface & System Operations', + "role": 'Gap Analyzer', + "category": 'Gap Analyzer', "installer": { "type": "git", - "pkg": "https://github.com/nicely-done/career_ops" + "pkg": "https://github.com/santifer/career-ops" }, "launcher": { "type": "desktop", @@ -940,13 +955,13 @@ TOOLS: dict[str, dict] = { }, 'container_tool': { "name": "Container Tool", - "level": 6, - "layer": "Orchestrators", - "role": "Containerization", - "category": "Container Ops", + "level": 1, + "layer": 'Host Platform & Infrastructure', + "role": 'Isolation', + "category": 'Isolation', "installer": { "type": "git", - "pkg": "https://github.com/nicely-done/container_tool" + "pkg": "https://github.com/NVIDIA/nvidia-container-toolkit" }, "launcher": { "type": "desktop", @@ -968,13 +983,13 @@ TOOLS: dict[str, dict] = { }, 'pm_skills': { "name": "PM Skills", - "level": 6, - "layer": "Orchestrators", - "role": "Project Management", - "category": "Workflow Automation", + "level": 10, + "layer": 'Human Interface & System Operations', + "role": 'Sprint Planner', + "category": 'Sprint Planner', "installer": { - "type": "uv", - "pkg": "pm-skills" + "type": "git", + "pkg": "https://github.com/product-on-purpose/pm-skills" }, "launcher": { "type": "desktop", @@ -996,13 +1011,13 @@ TOOLS: dict[str, dict] = { }, 'skillspector': { "name": "Skillspector", - "level": 6, - "layer": "Orchestrators", - "role": "Skill Inspector", - "category": "AI Agent", + "level": 7, + "layer": 'Agentic Software Engineering & Sandboxes', + "role": 'Skill Auditor', + "category": 'Skill Auditor', "installer": { "type": "git", - "pkg": "https://github.com/nicely-done/skillspector" + "pkg": "https://github.com/NVIDIA/skillspector" }, "launcher": { "type": "desktop", @@ -1024,13 +1039,13 @@ TOOLS: dict[str, dict] = { }, 'spec_kit': { "name": "Spec Kit", - "level": 6, - "layer": "Orchestrators", - "role": "Specification", - "category": "AI Agent", + "level": 7, + "layer": 'Agentic Software Engineering & Sandboxes', + "role": 'Requirement Builder', + "category": 'Requirement Builder', "installer": { "type": "git", - "pkg": "https://github.com/nicely-done/spec_kit" + "pkg": "https://github.com/github/spec-kit" }, "launcher": { "type": "desktop", @@ -1053,9 +1068,9 @@ TOOLS: dict[str, dict] = { 'wayland_ai': { "name": "Wayland AI", "level": 6, - "layer": "Orchestrators", - "role": "Agent Orchestrator", - "category": "AI Agent", + "layer": 'Multi-Agent Orchestration Runtimes', + "role": 'Desktop Agent Core', + "category": 'Desktop Agent Core', "installer": { "type": "git", "pkg": "https://github.com/ferroxlabs/wayland", @@ -1082,9 +1097,9 @@ TOOLS: dict[str, dict] = { 'letta': { "name": "Letta", "level": 6, - "layer": "Orchestrators", - "role": "Agent Framework", - "category": "Agent Framework", + "layer": 'Multi-Agent Orchestration Runtimes', + "role": 'Agent Framework', + "category": 'Agent Framework', "installer": { "type": "uv", "pkg": "letta" diff --git a/src/ai_lsc/registry/layers/routing.py b/src/ai_lsc/registry/layers/routing.py old mode 100644 new mode 100755 index 66cd2dd..c976693 --- a/src/ai_lsc/registry/layers/routing.py +++ b/src/ai_lsc/registry/layers/routing.py @@ -9,15 +9,19 @@ gateways) that had been folded into Orchestrators during the 13-to-10 reorg, plus the mesh-aware clients that ride on it. This module is consumed by :mod:`ai_lsc.registry.loader`. + +Structural fields (layer, level) follow the 10-Layer Systems +Architecture Taxonomy; tools may be regrouped across files in a +future pass — the loader merges by tool, not by filename. """ TOOLS: dict[str, dict] = { 'litellm': { "name": "LiteLLM Proxy", "level": 5, - "layer": "Routing", - "role": "API Gateway", - "category": "Proxy", + "layer": 'Intelligent API Routers & Proxies', + "role": 'Unified API Gateway', + "category": 'Unified API Gateway', "installer": { "type": "uv", "pkg": "litellm" @@ -44,12 +48,12 @@ TOOLS: dict[str, dict] = { '9router_proxy': { "name": "9Router Proxy", "level": 5, - "layer": "Routing", - "role": "API Gateway", - "category": "LLM Router", + "layer": 'Intelligent API Routers & Proxies', + "role": 'Load Balancer', + "category": 'Load Balancer', "installer": { "type": "git", - "pkg": "https://github.com/nicely-done/9router" + "pkg": "https://github.com/decolua/9router" }, "launcher": { "type": "tmux", @@ -79,9 +83,9 @@ TOOLS: dict[str, dict] = { 'meshllm': { "name": "MeshLLM", "level": 5, - "layer": "Routing", - "role": "API Gateway", - "category": "LLM Mesh", + "layer": 'Intelligent API Routers & Proxies', + "role": 'API Gateway', + "category": 'LLM Mesh', "installer": { "type": "script", "cmd": "mkdir -p {tools_root}/meshllm/bin && curl -fsSL https://raw.githubusercontent.com/Mesh-LLM/mesh-llm/main/install.sh | MESH_LLM_INSTALL_DIR={tools_root}/meshllm/bin bash" @@ -118,10 +122,10 @@ TOOLS: dict[str, dict] = { 'dify': { "name": "Dify", - "level": 5, - "layer": "Routing", - "role": "Pipeline Orchestrator", - "category": "Pipeline", + "level": 10, + "layer": 'Human Interface & System Operations', + "role": 'Platform Workspace', + "category": 'Platform Workspace', "installer": { "type": "git", "pkg": "https://github.com/langgenius/dify.git" @@ -152,10 +156,10 @@ TOOLS: dict[str, dict] = { 'picode': { "name": "PiCode", - "level": 5, - "layer": "Routing", - "role": "Coding Agent", - "category": "Mesh Client", + "level": 7, + "layer": 'Agentic Software Engineering & Sandboxes', + "role": 'Coding Agent', + "category": 'Mesh Client', "installer": { "type": "git", "pkg": "https://github.com/jasonjmcghee/picode.git" diff --git a/src/ai_lsc/registry/layers/security.py b/src/ai_lsc/registry/layers/security.py index 68c2992..e05b420 100755 --- a/src/ai_lsc/registry/layers/security.py +++ b/src/ai_lsc/registry/layers/security.py @@ -6,18 +6,22 @@ the local AI infrastructure. This module is consumed by :mod:`ai_lsc.registry.loader`. + +Structural fields (layer, level) follow the 10-Layer Systems +Architecture Taxonomy; tools may be regrouped across files in a +future pass — the loader merges by tool, not by filename. """ TOOLS: dict[str, dict] = { 'keycloak': { "name": "Keycloak", - "level": 7, - "layer": "Security", - "role": "Identity", - "category": "Auth", + "level": 1, + "layer": 'Host Platform & Infrastructure', + "role": 'Identity', + "category": 'Auth', "installer": { "type": "custom", - "pkg": "keycloak" + "pkg": "https://github.com/keycloak/keycloak" }, "launcher": { "type": "tmux", @@ -39,10 +43,10 @@ TOOLS: dict[str, dict] = { }, 'vault': { "name": "HashiCorp Vault", - "level": 7, - "layer": "Security", - "role": "Secrets", - "category": "Secrets Management", + "level": 1, + "layer": 'Host Platform & Infrastructure', + "role": 'Secrets', + "category": 'Secrets Management', "installer": { "type": "pacman", "pkg": "vault" @@ -67,10 +71,10 @@ TOOLS: dict[str, dict] = { }, 'trivy': { "name": "Trivy", - "level": 7, - "layer": "Security", - "role": "Scanner", - "category": "Container Security", + "level": 10, + "layer": 'Human Interface & System Operations', + "role": 'Scanner', + "category": 'Container Security', "installer": { "type": "pacman", "pkg": "trivy" @@ -95,10 +99,10 @@ TOOLS: dict[str, dict] = { }, 'fail2ban': { "name": "Fail2Ban", - "level": 7, - "layer": "Security", - "role": "IDS", - "category": "Intrusion Prevention", + "level": 1, + "layer": 'Host Platform & Infrastructure', + "role": 'IDS', + "category": 'Intrusion Prevention', "installer": { "type": "pacman", "pkg": "fail2ban" @@ -123,10 +127,10 @@ TOOLS: dict[str, dict] = { }, 'clamav': { "name": "ClamAV", - "level": 7, - "layer": "Security", - "role": "Scanner", - "category": "Antivirus", + "level": 10, + "layer": 'Human Interface & System Operations', + "role": 'Scanner', + "category": 'Antivirus', "installer": { "type": "pacman", "pkg": "clamav" @@ -151,10 +155,10 @@ TOOLS: dict[str, dict] = { }, 'opa': { "name": "Open Policy Agent", - "level": 7, - "layer": "Security", - "role": "Policy", - "category": "Policy Engine", + "level": 10, + "layer": 'Human Interface & System Operations', + "role": 'Policy', + "category": 'Policy Engine', "installer": { "type": "pacman", "pkg": "opa" diff --git a/src/ai_lsc/registry/layers/user_interfaces.py b/src/ai_lsc/registry/layers/user_interfaces.py index b0e18bf..c7f6f58 100755 --- a/src/ai_lsc/registry/layers/user_interfaces.py +++ b/src/ai_lsc/registry/layers/user_interfaces.py @@ -5,15 +5,19 @@ sensory interfaces (vision, speech, voice), and knowledge graph tools. This module is consumed by :mod:`ai_lsc.registry.loader`. + +Structural fields (layer, level) follow the 10-Layer Systems +Architecture Taxonomy; tools may be regrouped across files in a +future pass — the loader merges by tool, not by filename. """ TOOLS: dict[str, dict] = { 'openwebui': { "name": "Open WebUI", - "level": 9, - "layer": "User Interfaces", - "role": "Face", - "category": "Chat Frontend", + "level": 10, + "layer": 'Human Interface & System Operations', + "role": 'Extensible Interface', + "category": 'Extensible Interface', "installer": { "type": "uv", "pkg": "open-webui" @@ -40,10 +44,10 @@ TOOLS: dict[str, dict] = { }, 'anythingllm': { "name": "AnythingLLM", - "level": 9, - "layer": "User Interfaces", - "role": "Face", - "category": "Chat", + "level": 10, + "layer": 'Human Interface & System Operations', + "role": 'Collaborative Chat', + "category": 'Collaborative Chat', "installer": { "type": "git_node", "pkg": "https://github.com/Mintplex-Labs/anything-llm.git" @@ -68,10 +72,10 @@ TOOLS: dict[str, dict] = { }, 'librechat': { "name": "LibreChat", - "level": 9, - "layer": "User Interfaces", - "role": "Face", - "category": "Chat Agent Platform", + "level": 10, + "layer": 'Human Interface & System Operations', + "role": 'Enterprise Assistant', + "category": 'Enterprise Assistant', "installer": { "type": "git_node", "pkg": "https://github.com/danny-avila/LibreChat.git", @@ -105,10 +109,10 @@ TOOLS: dict[str, dict] = { }, 'flowise': { "name": "Flowise", - "level": 9, - "layer": "User Interfaces", - "role": "Face", - "category": "Workflow", + "level": 10, + "layer": 'Human Interface & System Operations', + "role": 'Visual Agent Canvas', + "category": 'Visual Agent Canvas', "installer": { "type": "npm", "pkg": "flowise" @@ -133,10 +137,10 @@ TOOLS: dict[str, dict] = { }, 'invokeai': { "name": "InvokeAI", - "level": 9, - "layer": "User Interfaces", - "role": "Face", - "category": "Image Generation", + "level": 10, + "layer": 'Human Interface & System Operations', + "role": 'Studio Canvas', + "category": 'Studio Canvas', "installer": { "type": "git", "pkg": "https://github.com/invoke-ai/InvokeAI" @@ -163,13 +167,13 @@ TOOLS: dict[str, dict] = { }, 'forge': { "name": "Forge (A1111)", - "level": 9, - "layer": "User Interfaces", - "role": "Face", - "category": "Image Generation", + "level": 10, + "layer": 'Human Interface & System Operations', + "role": 'Image WebUI', + "category": 'Image WebUI', "installer": { "type": "git", - "pkg": "https://github.com/AUTOMATIC1111/stable-diffusion-webui-forge" + "pkg": "https://github.com/lllyasviel/stable-diffusion-webui-forge" }, "launcher": { "type": "tmux", @@ -193,10 +197,10 @@ TOOLS: dict[str, dict] = { }, 'dashy': { "name": "Dashy", - "level": 9, - "layer": "User Interfaces", - "role": "Face", - "category": "Homepage", + "level": 10, + "layer": 'Human Interface & System Operations', + "role": 'Cluster Homepage', + "category": 'Cluster Homepage', "installer": { "type": "npm", "pkg": "dashy" @@ -221,10 +225,10 @@ TOOLS: dict[str, dict] = { }, 'obsidian': { "name": "Obsidian", - "level": 9, - "layer": "User Interfaces", - "role": "Face", - "category": "Knowledge Graph Notes", + "level": 10, + "layer": 'Human Interface & System Operations', + "role": 'Sovereign Graph Editor', + "category": 'Sovereign Graph Editor', "installer": { "type": "pacman", "pkg": "obsidian" @@ -249,10 +253,10 @@ TOOLS: dict[str, dict] = { }, 'hermes': { "name": "Hermes", - "level": 9, - "layer": "User Interfaces", - "role": "Face", - "category": "Ecosystem Dashboard", + "level": 10, + "layer": 'Human Interface & System Operations', + "role": 'Ecosystem Launcher', + "category": 'Ecosystem Launcher', "installer": { "type": "npm", "pkg": "hermes-ai" @@ -279,10 +283,10 @@ TOOLS: dict[str, dict] = { }, 'hermes_desktop': { "name": "Hermes Desktop", - "level": 9, - "layer": "User Interfaces", - "role": "Face", - "category": "Desktop Agent", + "level": 10, + "layer": 'Human Interface & System Operations', + "role": 'Desktop GUI', + "category": 'Desktop GUI', "installer": { "type": "npm", "pkg": "hermes-desktop" @@ -309,10 +313,10 @@ TOOLS: dict[str, dict] = { }, 'hermes_dashboard_page': { "name": "Hermes Dashboard", - "level": 9, - "layer": "User Interfaces", - "role": "Face", - "category": "Dashboard", + "level": 10, + "layer": 'Human Interface & System Operations', + "role": 'System Console', + "category": 'System Console', "installer": { "type": "npm", "pkg": "hermes-dashboard" @@ -339,13 +343,13 @@ TOOLS: dict[str, dict] = { }, 'local_llm_launcher': { "name": "Local LLM Launcher", - "level": 9, - "layer": "User Interfaces", - "role": "Face", - "category": "LLM GUI", + "level": 10, + "layer": 'Human Interface & System Operations', + "role": 'Model Manager GUI', + "category": 'Model Manager GUI', "installer": { "type": "git", - "pkg": "https://github.com/nicely-done/local-llm-launcher-gui" + "pkg": "https://github.com/jimdawdy-hub/Local-LLM-Launcher-GUI" }, "launcher": { "type": "desktop", @@ -369,10 +373,10 @@ TOOLS: dict[str, dict] = { }, 'openjarvis': { "name": "OpenJarvis", - "level": 9, - "layer": "User Interfaces", - "role": "Central Intelligence", - "category": "AI Assistant Platform", + "level": 10, + "layer": 'Human Interface & System Operations', + "role": 'Local Central Shell', + "category": 'Local Central Shell', "installer": { "type": "git_node", "pkg": "https://github.com/openjarvis/openjarvis.git", @@ -409,12 +413,12 @@ TOOLS: dict[str, dict] = { 'deep_eye': { "name": "Deep Eye", "level": 9, - "layer": "User Interfaces", - "role": "Vision", - "category": "Computer Vision", + "layer": 'Data Extraction & Pipeline Harvest', + "role": 'Vision describer', + "category": 'Vision describer', "installer": { "type": "git", - "pkg": "https://github.com/nicely-done/deep-eye" + "pkg": "https://github.com/zakirkun/deep-eye" }, "launcher": { "type": "tmux", @@ -439,12 +443,12 @@ TOOLS: dict[str, dict] = { 'parakeet': { "name": "Parakeet.cpp", "level": 9, - "layer": "User Interfaces", - "role": "Senses", - "category": "Speech Recognition", + "layer": 'Data Extraction & Pipeline Harvest', + "role": 'Speech Transcriber', + "category": 'Speech Transcriber', "installer": { "type": "git", - "pkg": "https://github.com/nicely-done/parakeet.cpp" + "pkg": "https://github.com/mudler/parakeet.cpp" }, "launcher": { "type": "tmux", @@ -469,9 +473,9 @@ TOOLS: dict[str, dict] = { 'luxtts': { "name": "LuxTTS", "level": 9, - "layer": "User Interfaces", - "role": "Voice", - "category": "Text-to-Speech", + "layer": 'Data Extraction & Pipeline Harvest', + "role": 'Voice Synthesis', + "category": 'Voice Synthesis', "installer": { "type": "uv", "pkg": "luxtts" @@ -496,10 +500,10 @@ TOOLS: dict[str, dict] = { }, 'jan': { "name": "Jan", - "level": 9, - "layer": "User Interfaces", - "role": "Face", - "category": "LLM GUI", + "level": 10, + "layer": 'Human Interface & System Operations', + "role": 'Face', + "category": 'LLM GUI', "installer": { "type": "npm", "pkg": "@janhq/jan" @@ -526,10 +530,10 @@ TOOLS: dict[str, dict] = { }, 'hermes_webui': { "name": "Hermes WebUI", - "level": 9, - "layer": "User Interfaces", - "role": "Face", - "category": "Chat Frontend", + "level": 10, + "layer": 'Human Interface & System Operations', + "role": 'Face', + "category": 'Chat Frontend', "installer": { "type": "uv", "pkg": "open-webui" @@ -561,4 +565,64 @@ TOOLS: dict[str, dict] = { } }, -} \ No newline at end of file + + 'kanban': { + "name": 'Kanban Board', + "level": 10, + "layer": 'Human Interface & System Operations', + "role": 'Sprints Manager', + "category": 'Sprints Manager', + "installer": { + "type": 'npm', + "pkg": 'kanban-board', + }, + "launcher": { + "type": 'desktop', + "cmd": 'kanban', + "default_port": None, + }, + "deps": [ + ], + "description": 'Local visual dashboard designed to map task timelines and track developer sprints natively.', + "license": 'Proprietary', + "flags": { + "has_cli": False, + "has_gui": True, + "has_web": False, + "is_ollama": False, + "is_passive": False, + "is_mcp": False, + "is_skills_collection": False, + } + }, + 'comfyui': { + "name": "ComfyUI", + "level": 10, + "layer": 'Human Interface & System Operations', + "role": 'Node-Based Image Gen', + "category": 'Node-Based Image Gen', + "installer": { + "type": "git", + "pkg": "https://github.com/comfy-org/comfyui" + }, + "launcher": { + "type": "tmux", + "cmd": "cd {tools_root}/comfyui && python main.py --listen 0.0.0.0 --port {port}", + "default_port": 8188 + }, + "deps": [ + "cuda" + ], + "description": "Node-based Stable Diffusion / FLUX image generation pipeline editor.", + "license": 'GPL-3.0', + "flags": { + "has_cli": False, + "has_gui": False, + "has_web": True, + "is_ollama": False, + "is_passive": False, + "is_mcp": False, + "is_skills_collection": False + } + }, +} diff --git a/src/ai_lsc/registry/stack_templates/local-coder-mesh.json b/src/ai_lsc/registry/stack_templates/local-coder-mesh.json old mode 100644 new mode 100755 diff --git a/src/ai_lsc/registry/validator.py b/src/ai_lsc/registry/validator.py index 479ef81..985269d 100755 --- a/src/ai_lsc/registry/validator.py +++ b/src/ai_lsc/registry/validator.py @@ -150,10 +150,11 @@ def _check_entry(tool_id: str, entry: dict[str, Any]) -> list[str]: if missing: errors.append(f"{tool_id}: missing fields {sorted(missing)}") - # Level must be 1–13 + # Level must be 1–10 (10-Layer Systems Architecture Taxonomy) level = entry.get("level") - if isinstance(level, int) and not (1 <= level <= 13): - errors.append(f"{tool_id}: level {level} out of range 1-13") + if isinstance(level, int) and not (1 <= level <= 10): + errors.append(f"{tool_id}: level {level} out of range 1-10 " + f"(10-layer taxonomy)") elif not isinstance(level, int): errors.append(f"{tool_id}: level is not an int ({level!r})") diff --git a/src/ai_lsc/runtime/installer.py b/src/ai_lsc/runtime/installer.py index 4d23b8d..789ec20 100755 --- a/src/ai_lsc/runtime/installer.py +++ b/src/ai_lsc/runtime/installer.py @@ -43,6 +43,7 @@ Key capabilities from __future__ import annotations import os +import time import re import shlex import shutil @@ -562,14 +563,53 @@ class InstallerManager: post_install: str | None = None, env_overrides: dict[str, str] | None = None, ) -> str: - """Clone a git repository into ``tools_root/``.""" + """Clone or update a git repository at ``tools_root/``. + + Bandwidth-aware: if a git working tree already exists at the + destination, run ``git pull --ff-only`` to fetch only the diff. + If the destination exists but is not a git repo (or the pull + fails for any reason — diverged branches, network errors, + corrupted index, etc.), move the old dir aside and re-clone + fresh, so the install always ends in a usable state. + """ dest = os.path.join(self.tools_root, tool_id) - if os.path.exists(dest): + git_dir = os.path.join(dest, ".git") + if os.path.isdir(git_dir): + try: + subprocess.run( + ["git", "-C", dest, "pull", "--ff-only"], + check=True, timeout=600, + ) + msg = f"Git source updated (pulled): {dest}" + except subprocess.CalledProcessError as exc: + logger.warning( + "git pull failed for %s (%s); re-cloning fresh", + tool_id, exc, + ) + backup = dest + ".bak." + str(int(time.time())) + shutil.move(dest, backup) + os.makedirs(dest, exist_ok=True) + subprocess.run( + ["git", "clone", pkg, dest], + check=True, timeout=600, + ) + msg = ( + f"Git source re-cloned (pull failed, " + f"old copy at {backup}): {dest}" + ) + elif os.path.exists(dest): + # Dir exists but is not a git repo — back it up and clone. + backup = dest + ".bak." + str(int(time.time())) + shutil.move(dest, backup) + os.makedirs(dest, exist_ok=True) subprocess.run( - ["git", "-C", dest, "pull", "--ff-only"], + ["git", "clone", pkg, dest], check=True, timeout=600, ) - msg = f"Git source updated: {dest}" + msg = ( + f"Git source cloned (existing non-git dir backed up " + f"at {backup}): {dest}" + ) else: os.makedirs(dest, exist_ok=True) subprocess.run( @@ -588,16 +628,58 @@ class InstallerManager: tool_id: str, post_install: str | None = None, ) -> str: - """Clone a git repo and run ``yarn setup``.""" + """Clone or update a git repo and run ``yarn install``. + + Bandwidth-aware: if a git working tree already exists at the + destination, run ``git pull --ff-only`` (diff-only fetch) and + then ``yarn install`` to pick up any changed dependencies. If + the destination exists but is not a git repo, or if the pull + fails, move the old dir aside and re-clone fresh. + """ dest = os.path.join(self.tools_root, tool_id) - if os.path.exists(dest): + git_dir = os.path.join(dest, ".git") + if os.path.isdir(git_dir): + try: + subprocess.run( + ["git", "-C", dest, "pull", "--ff-only"], + check=True, timeout=600, + ) + subprocess.run( + ["yarn", "install"], cwd=dest, check=True, timeout=300, + ) + msg = f"Git+Node source updated (pulled): {dest}" + except subprocess.CalledProcessError as exc: + logger.warning( + "git pull / yarn install failed for %s (%s); re-cloning", + tool_id, exc, + ) + backup = dest + ".bak." + str(int(time.time())) + shutil.move(dest, backup) + os.makedirs(dest, exist_ok=True) + subprocess.run( + ["git", "clone", pkg, dest], check=True, timeout=600, + ) + subprocess.run( + ["yarn", "install"], cwd=dest, check=True, timeout=300, + ) + msg = ( + f"Git+Node source re-cloned (pull failed, " + f"old copy at {backup}): {dest}" + ) + elif os.path.exists(dest): + backup = dest + ".bak." + str(int(time.time())) + shutil.move(dest, backup) + os.makedirs(dest, exist_ok=True) subprocess.run( - ["git", "-C", dest, "pull", "--ff-only"], check=True, timeout=600, + ["git", "clone", pkg, dest], check=True, timeout=600, ) subprocess.run( ["yarn", "install"], cwd=dest, check=True, timeout=300, ) - msg = f"Git+Node source updated: {dest}" + msg = ( + f"Git+Node source cloned (existing non-git dir backed " + f"up at {backup}): {dest}" + ) else: os.makedirs(dest, exist_ok=True) subprocess.run( diff --git a/src/ai_lsc/stack/connections.py b/src/ai_lsc/stack/connections.py index 2cc5871..d68a80a 100755 --- a/src/ai_lsc/stack/connections.py +++ b/src/ai_lsc/stack/connections.py @@ -25,6 +25,63 @@ from __future__ import annotations from dataclasses import dataclass, field from typing import Any + +# ── 10-layer taxonomy resolution ────────────────────────────────────── +# Static wiring entries carry their layer as a literal; loop-based bulk +# allocations resolve the layer dynamically from the registry so the +# wiring graph can never drift from the taxonomy again. +from ai_lsc.registry.defaults import DEFAULT_REGISTRY + +# Layer assignments for staged tools that live in the modular layer +# files but are not part of the shipped DEFAULT_REGISTRY seed. +_WIRING_LAYER_SUPPLEMENT: dict[str, str] = { + "agent_reach": "Multi-Agent Orchestration Runtimes", + "algory": "Multi-Agent Orchestration Runtimes", + "atlas_os": "Multi-Agent Orchestration Runtimes", + "clamav": "Human Interface & System Operations", + "crossplane": "Human Interface & System Operations", + "distcc": "Development Runtime & Environment", + "eagle_eye": "Human Interface & System Operations", + "everos_memory": "Decentralized Knowledge & Vector Stores", + "gemini_cli": "Agentic Software Engineering & Sandboxes", + "glassmind": "Multi-Agent Orchestration Runtimes", + "goose": "Agentic Software Engineering & Sandboxes", + "graphify": "Agentic Software Engineering & Sandboxes", + "headroom": "Multi-Agent Orchestration Runtimes", + "hermes_webui": "Human Interface & System Operations", + "honcho": "Multi-Agent Orchestration Runtimes", + "jan": "Human Interface & System Operations", + "letta": "Multi-Agent Orchestration Runtimes", + "mem0": "Decentralized Knowledge & Vector Stores", + "meshllm": "Intelligent API Routers & Proxies", + "mnemo_cortex": "Decentralized Knowledge & Vector Stores", + "n8n": "Human Interface & System Operations", + "nightshift": "Multi-Agent Orchestration Runtimes", + "nvidia_agent_skills": "Multi-Agent Orchestration Runtimes", + "odysseus": "Multi-Agent Orchestration Runtimes", + "openbrain": "Multi-Agent Orchestration Runtimes", + "opencode": "Agentic Software Engineering & Sandboxes", + "picode": "Agentic Software Engineering & Sandboxes", + "pssh": "Human Interface & System Operations", + "qwen_code": "Agentic Software Engineering & Sandboxes", + "sglang": "Local Inference Engines", + "tinygrad": "GPU Acceleration & Optimization", + "trivy": "Human Interface & System Operations", + "turbovec": "Decentralized Knowledge & Vector Stores", + "zcoder": "Agentic Software Engineering & Sandboxes", + "dma": "Development Runtime & Environment", + "opa": "Human Interface & System Operations", +} + + +def _wiring_layer(tool_id: str) -> str: + """Resolve a tool's 10-layer taxonomy layer for its wiring entry.""" + entry = DEFAULT_REGISTRY.get(tool_id) + if entry: + return entry.get("layer", "") + return _WIRING_LAYER_SUPPLEMENT.get(tool_id, "") + + # ── Schema version ────────────────────────────────────────────────── CONNECTIONS_SCHEMA_VERSION: str = "1.0.0" @@ -358,12 +415,12 @@ def _reg(w: StackWiring) -> StackWiring: # ────────────────────────────────────────────────────────────────── -# L1: Host Platform +# L1: Host Platform → Layer 1: Host Platform & Infrastructure # ────────────────────────────────────────────────────────────────── _reg(StackWiring( tool_id="postgresql", - layer="Host Platform", + layer="Host Platform & Infrastructure", interfaces=[ ToolInterface( interface_id="postgresql", @@ -403,7 +460,7 @@ _reg(StackWiring( _reg(StackWiring( tool_id="redis", - layer="Host Platform", + layer="Host Platform & Infrastructure", interfaces=[ ToolInterface( interface_id="redis", @@ -443,7 +500,7 @@ _reg(StackWiring( _reg(StackWiring( tool_id="mariadb", - layer="Host Platform", + layer="Host Platform & Infrastructure", interfaces=[ ToolInterface( interface_id="mariadb", @@ -473,7 +530,7 @@ _reg(StackWiring( _reg(StackWiring( tool_id="duckdb", - layer="Host Platform", + layer="Host Platform & Infrastructure", interfaces=[ ToolInterface( interface_id="duckdb_in_process", @@ -501,7 +558,7 @@ _reg(StackWiring( _reg(StackWiring( tool_id="sqlite3", - layer="Host Platform", + layer="Host Platform & Infrastructure", interfaces=[], connections=[], context=EngineeringContext( @@ -515,12 +572,12 @@ _reg(StackWiring( # ────────────────────────────────────────────────────────────────── -# L2: Development Environment +# L2: Development Environment → Layer 2: Development Runtime & Environment # ────────────────────────────────────────────────────────────────── _reg(StackWiring( tool_id="cuda", - layer="GPU Runtimes", + layer="GPU Acceleration & Optimization", interfaces=[_CUDA_INTERFACE], connections=[], context=EngineeringContext( @@ -536,7 +593,7 @@ _reg(StackWiring( _reg(StackWiring( tool_id="cupy", - layer="Development Environment", + layer="GPU Acceleration & Optimization", interfaces=[], connections=[ Connection( @@ -558,7 +615,7 @@ _reg(StackWiring( _reg(StackWiring( tool_id="python", - layer="Development Environment", + layer="Development Runtime & Environment", interfaces=[], connections=[], context=EngineeringContext( @@ -571,7 +628,7 @@ _reg(StackWiring( _reg(StackWiring( tool_id="tree_sitter", - layer="Development Environment", + layer="Development Runtime & Environment", interfaces=[], connections=[], context=EngineeringContext( @@ -582,7 +639,7 @@ _reg(StackWiring( _reg(StackWiring( tool_id="ripgrep", - layer="Development Environment", + layer="Development Runtime & Environment", interfaces=[], connections=[], context=EngineeringContext( @@ -593,7 +650,7 @@ _reg(StackWiring( _reg(StackWiring( tool_id="fd", - layer="Development Environment", + layer="Development Runtime & Environment", interfaces=[], connections=[], context=EngineeringContext( @@ -604,12 +661,12 @@ _reg(StackWiring( # ────────────────────────────────────────────────────────────────── -# L3: GPU Runtime +# L3: GPU Runtime → Layer 3: GPU Acceleration & Optimization # ────────────────────────────────────────────────────────────────── _reg(StackWiring( tool_id="apex", - layer="GPU Runtimes", + layer="GPU Acceleration & Optimization", interfaces=[], connections=[ Connection( @@ -632,7 +689,7 @@ _reg(StackWiring( _reg(StackWiring( tool_id="heretic", - layer="Engines", + layer="Local Inference Engines", interfaces=[], connections=[ Connection( @@ -656,7 +713,7 @@ _reg(StackWiring( _reg(StackWiring( tool_id="unsloth", - layer="Development Environment", + layer="GPU Acceleration & Optimization", interfaces=[], connections=[ Connection( @@ -679,12 +736,12 @@ _reg(StackWiring( # ────────────────────────────────────────────────────────────────── -# L4: Inference Engines +# L4: Inference Engines → Layer 4: Local Inference Engines # ────────────────────────────────────────────────────────────────── _reg(StackWiring( tool_id="ollama", - layer="Engines", + layer="Local Inference Engines", interfaces=[ ToolInterface( interface_id="openai_api", @@ -741,7 +798,7 @@ _reg(StackWiring( _reg(StackWiring( tool_id="llamacpp", - layer="Engines", + layer="Local Inference Engines", interfaces=[ ToolInterface( interface_id="openai_api", @@ -771,7 +828,7 @@ _reg(StackWiring( _reg(StackWiring( tool_id="vllm", - layer="Engines", + layer="Local Inference Engines", interfaces=[ ToolInterface( interface_id="openai_api", @@ -818,7 +875,7 @@ _reg(StackWiring( _reg(StackWiring( tool_id="airllm", - layer="Engines", + layer="Local Inference Engines", interfaces=[ ToolInterface( interface_id="airllm_api", @@ -841,7 +898,7 @@ _reg(StackWiring( _reg(StackWiring( tool_id="koboldcpp", - layer="Engines", + layer="Local Inference Engines", interfaces=[ ToolInterface( interface_id="koboldcpp_api", @@ -859,7 +916,7 @@ _reg(StackWiring( _reg(StackWiring( tool_id="llamafile", - layer="Engines", + layer="Local Inference Engines", interfaces=[ ToolInterface( interface_id="llamafile_api", @@ -877,7 +934,7 @@ _reg(StackWiring( _reg(StackWiring( tool_id="locally_uncensored", - layer="Engines", + layer="Local Inference Engines", interfaces=[], connections=[ Connection( @@ -901,7 +958,7 @@ _reg(StackWiring( _reg(StackWiring( tool_id="turbollm", - layer="Engines", + layer="Local Inference Engines", interfaces=[ ToolInterface( interface_id="turbollm_api", @@ -924,19 +981,19 @@ _reg(StackWiring( # ────────────────────────────────────────────────────────────────── -# L5: Distributed Runtime +# L5: Distributed Runtime → Layer 3/4: GPU + Inference Engines (10-layer taxonomy) # (vLLM is already registered above — it sits at L5 in the taxonomy # but is logically grouped with inference engines in the wiring.) # ────────────────────────────────────────────────────────────────── # ────────────────────────────────────────────────────────────────── -# L6: AI Endpoints (→ the restored "Routing" layer in the 11-layer taxonomy) +# L6: AI Endpoints → Layer 5: Intelligent API Routers & Proxies (10-layer taxonomy) # ────────────────────────────────────────────────────────────────── _reg(StackWiring( tool_id="litellm", - layer="Routing", + layer="Intelligent API Routers & Proxies", interfaces=[ ToolInterface( interface_id="openai_api", @@ -1015,7 +1072,7 @@ _reg(StackWiring( _reg(StackWiring( tool_id="9router_proxy", - layer="Routing", + layer="Intelligent API Routers & Proxies", interfaces=[ ToolInterface( interface_id="router_api", @@ -1041,7 +1098,7 @@ _reg(StackWiring( _reg(StackWiring( tool_id="deep_eye", - layer="User Interfaces", + layer="Data Extraction & Pipeline Harvest", interfaces=[ ToolInterface( interface_id="deep_eye_api", @@ -1066,7 +1123,7 @@ _reg(StackWiring( _reg(StackWiring( tool_id="luxtts", - layer="User Interfaces", + layer="Data Extraction & Pipeline Harvest", interfaces=[ ToolInterface( interface_id="tts_api", @@ -1082,12 +1139,12 @@ _reg(StackWiring( # ────────────────────────────────────────────────────────────────── -# L7: Data & Knowledge Pipelines +# L7: Data & Knowledge Pipelines → Layer 8/9: Vector Stores + Data Extraction (10-layer taxonomy) # ────────────────────────────────────────────────────────────────── _reg(StackWiring( tool_id="chromadb", - layer="Knowledge Management", + layer="Decentralized Knowledge & Vector Stores", interfaces=[ ToolInterface( interface_id="http_api", @@ -1121,7 +1178,7 @@ _reg(StackWiring( _reg(StackWiring( tool_id="qdrant", - layer="Knowledge Management", + layer="Decentralized Knowledge & Vector Stores", interfaces=[ ToolInterface( interface_id="http_api", @@ -1151,7 +1208,7 @@ _reg(StackWiring( _reg(StackWiring( tool_id="lancedb", - layer="Knowledge Management", + layer="Decentralized Knowledge & Vector Stores", interfaces=[ ToolInterface( interface_id="http_api", @@ -1167,7 +1224,7 @@ _reg(StackWiring( _reg(StackWiring( tool_id="elasticsearch", - layer="Knowledge Management", + layer="Decentralized Knowledge & Vector Stores", interfaces=[ ToolInterface( interface_id="http_api", @@ -1184,7 +1241,7 @@ _reg(StackWiring( _reg(StackWiring( tool_id="neo4j", - layer="Knowledge Management", + layer="Decentralized Knowledge & Vector Stores", interfaces=[ ToolInterface( interface_id="http_api", @@ -1201,7 +1258,7 @@ _reg(StackWiring( _reg(StackWiring( tool_id="meilisearch", - layer="Knowledge Management", + layer="Decentralized Knowledge & Vector Stores", interfaces=[ ToolInterface( interface_id="http_api", @@ -1217,7 +1274,7 @@ _reg(StackWiring( _reg(StackWiring( tool_id="airweave", - layer="Knowledge Management", + layer="Data Extraction & Pipeline Harvest", interfaces=[ ToolInterface( interface_id="airweave_api", @@ -1234,7 +1291,7 @@ _reg(StackWiring( _reg(StackWiring( tool_id="parakeet", - layer="User Interfaces", + layer="Data Extraction & Pipeline Harvest", interfaces=[ ToolInterface( interface_id="parakeet_api", @@ -1257,7 +1314,7 @@ _reg(StackWiring( _reg(StackWiring( tool_id="turbovec", - layer="Knowledge Management", + layer="Decentralized Knowledge & Vector Stores", interfaces=[ ToolInterface( interface_id="turbovec_api", @@ -1280,7 +1337,7 @@ _reg(StackWiring( _reg(StackWiring( tool_id="crawl4ai", - layer="Knowledge Management", + layer="Data Extraction & Pipeline Harvest", interfaces=[], connections=[], context=EngineeringContext( @@ -1294,7 +1351,7 @@ _reg(StackWiring( _reg(StackWiring( tool_id="docling", - layer="Knowledge Management", + layer="Data Extraction & Pipeline Harvest", interfaces=[], connections=[], context=EngineeringContext( @@ -1306,7 +1363,7 @@ _reg(StackWiring( _reg(StackWiring( tool_id="fabric", - layer="Orchestrators", + layer="Intelligent API Routers & Proxies", interfaces=[], connections=[], context=EngineeringContext( @@ -1318,7 +1375,7 @@ _reg(StackWiring( _reg(StackWiring( tool_id="graphrag", - layer="Knowledge Management", + layer="Decentralized Knowledge & Vector Stores", interfaces=[], connections=[], context=EngineeringContext( @@ -1330,7 +1387,7 @@ _reg(StackWiring( _reg(StackWiring( tool_id="markitdown", - layer="Knowledge Management", + layer="Data Extraction & Pipeline Harvest", interfaces=[], connections=[], context=EngineeringContext( @@ -1342,7 +1399,7 @@ _reg(StackWiring( _reg(StackWiring( tool_id="mirofish", - layer="Knowledge Management", + layer="Data Extraction & Pipeline Harvest", interfaces=[], connections=[], context=EngineeringContext( @@ -1353,7 +1410,7 @@ _reg(StackWiring( _reg(StackWiring( tool_id="opendataloader", - layer="Knowledge Management", + layer="Data Extraction & Pipeline Harvest", interfaces=[], connections=[], context=EngineeringContext( @@ -1364,7 +1421,7 @@ _reg(StackWiring( _reg(StackWiring( tool_id="opendataloader_pdf", - layer="Knowledge Management", + layer="Data Extraction & Pipeline Harvest", interfaces=[], connections=[], context=EngineeringContext( @@ -1375,7 +1432,7 @@ _reg(StackWiring( _reg(StackWiring( tool_id="understand_anything", - layer="Knowledge Management", + layer="Data Extraction & Pipeline Harvest", interfaces=[], connections=[ Connection( @@ -1391,7 +1448,7 @@ _reg(StackWiring( _reg(StackWiring( tool_id="whisper", - layer="Knowledge Management", + layer="Data Extraction & Pipeline Harvest", interfaces=[], connections=[], context=EngineeringContext( @@ -1403,12 +1460,12 @@ _reg(StackWiring( # ────────────────────────────────────────────────────────────────── -# L8: Automation & Execution +# L8: Automation & Execution → Layer 6/7: Orchestration + Agentic Engineering (10-layer taxonomy) # ────────────────────────────────────────────────────────────────── _reg(StackWiring( tool_id="n8n", - layer="Orchestrators", + layer="Human Interface & System Operations", interfaces=[ ToolInterface( interface_id="n8n_api", @@ -1454,7 +1511,7 @@ _reg(StackWiring( _reg(StackWiring( tool_id="nightshift", - layer="Orchestrators", + layer="Multi-Agent Orchestration Runtimes", interfaces=[ ToolInterface( interface_id="nightshift_api", @@ -1470,7 +1527,7 @@ _reg(StackWiring( _reg(StackWiring( tool_id="hivemind", - layer="Orchestrators", + layer="Multi-Agent Orchestration Runtimes", interfaces=[ ToolInterface( interface_id="hivemind_api", @@ -1495,7 +1552,7 @@ _reg(StackWiring( _reg(StackWiring( tool_id="hermes_agent", - layer="Orchestrators", + layer="Multi-Agent Orchestration Runtimes", interfaces=[ ToolInterface( interface_id="hermes_agent_api", @@ -1520,7 +1577,7 @@ _reg(StackWiring( _reg(StackWiring( tool_id="openhands", - layer="DevOps", + layer="Agentic Software Engineering & Sandboxes", interfaces=[ ToolInterface( interface_id="openhands_api", @@ -1582,7 +1639,7 @@ for _tid in [ )) _reg(StackWiring( tool_id=_tid, - layer="DevOps", + layer=_wiring_layer(_tid), interfaces=[], connections=_conns, context=EngineeringContext( @@ -1595,7 +1652,7 @@ for _tid in [ # agno has a web interface but no deps in defaults _reg(StackWiring( tool_id="agno", - layer="Orchestrators", + layer="Multi-Agent Orchestration Runtimes", interfaces=[ ToolInterface( interface_id="agno_web", @@ -1611,12 +1668,12 @@ _reg(StackWiring( # ────────────────────────────────────────────────────────────────── -# L9: Observability +# L9: Observability → Layer 10: Human Interface & System Operations (10-layer taxonomy) # ────────────────────────────────────────────────────────────────── _reg(StackWiring( tool_id="prometheus", - layer="Observability", + layer="Human Interface & System Operations", interfaces=[ ToolInterface( interface_id="prometheus_api", @@ -1646,7 +1703,7 @@ _reg(StackWiring( _reg(StackWiring( tool_id="grafana", - layer="Observability", + layer="Human Interface & System Operations", interfaces=[ ToolInterface( interface_id="grafana_web", @@ -1695,7 +1752,7 @@ _reg(StackWiring( _reg(StackWiring( tool_id="grafana_alloy", - layer="Observability", + layer="Human Interface & System Operations", interfaces=[ ToolInterface( interface_id="otlp_grpc", @@ -1739,7 +1796,7 @@ _reg(StackWiring( _reg(StackWiring( tool_id="glances", - layer="Observability", + layer="Human Interface & System Operations", interfaces=[ ToolInterface( interface_id="glances_web", @@ -1755,7 +1812,7 @@ _reg(StackWiring( _reg(StackWiring( tool_id="opik", - layer="Observability", + layer="Human Interface & System Operations", interfaces=[ ToolInterface( interface_id="opik_api", @@ -1771,7 +1828,7 @@ _reg(StackWiring( _reg(StackWiring( tool_id="pulse_ai", - layer="Observability", + layer="Human Interface & System Operations", interfaces=[ ToolInterface( interface_id="pulse_ai_api", @@ -1787,7 +1844,7 @@ _reg(StackWiring( _reg(StackWiring( tool_id="hermes_dashboard_page", - layer="User Interfaces", + layer="Human Interface & System Operations", interfaces=[ ToolInterface( interface_id="dashboard_api", @@ -1812,7 +1869,7 @@ _reg(StackWiring( _reg(StackWiring( tool_id="latitude", - layer="Observability", + layer="Human Interface & System Operations", interfaces=[ ToolInterface( interface_id="latitude_api", @@ -1837,12 +1894,12 @@ _reg(StackWiring( # ────────────────────────────────────────────────────────────────── -# L10: Intelligent Routing (folded into "Orchestrators" in the 11-layer taxonomy) +# L10: Intelligent Routing → Layer 5: Intelligent API Routers & Proxies (10-layer taxonomy) # ────────────────────────────────────────────────────────────────── _reg(StackWiring( tool_id="odysseus", - layer="Orchestrators", + layer="Multi-Agent Orchestration Runtimes", interfaces=[ ToolInterface( interface_id="odysseus_api", @@ -1867,7 +1924,7 @@ _reg(StackWiring( _reg(StackWiring( tool_id="glassmind", - layer="Orchestrators", + layer="Multi-Agent Orchestration Runtimes", interfaces=[ ToolInterface( interface_id="glassmind_api", @@ -1892,7 +1949,7 @@ _reg(StackWiring( _reg(StackWiring( tool_id="mnemo_cortex", - layer="Knowledge Management", + layer="Decentralized Knowledge & Vector Stores", interfaces=[ ToolInterface( interface_id="mnemo_cortex_api", @@ -1917,7 +1974,7 @@ _reg(StackWiring( _reg(StackWiring( tool_id="openbrain", - layer="Orchestrators", + layer="Multi-Agent Orchestration Runtimes", interfaces=[ ToolInterface( interface_id="openbrain_api", @@ -1942,7 +1999,7 @@ _reg(StackWiring( _reg(StackWiring( tool_id="everos_memory", - layer="Knowledge Management", + layer="Decentralized Knowledge & Vector Stores", interfaces=[ ToolInterface( interface_id="everos_memory_api", @@ -1960,7 +2017,7 @@ _reg(StackWiring( for _tid in ["autogen", "crewai", "openai_swarm"]: _reg(StackWiring( tool_id=_tid, - layer="Orchestrators", + layer=_wiring_layer(_tid), interfaces=[], connections=[], context=EngineeringContext( @@ -1972,12 +2029,12 @@ for _tid in ["autogen", "crewai", "openai_swarm"]: # ────────────────────────────────────────────────────────────────── -# L11: User Interfaces +# L11: User Interfaces → Layer 10: Human Interface & System Operations (10-layer taxonomy) # ────────────────────────────────────────────────────────────────── _reg(StackWiring( tool_id="openwebui", - layer="User Interfaces", + layer="Human Interface & System Operations", interfaces=[ ToolInterface( interface_id="openwebui_web", @@ -2049,7 +2106,7 @@ _reg(StackWiring( _reg(StackWiring( tool_id="dify", - layer="Routing", + layer="Human Interface & System Operations", interfaces=[ ToolInterface( interface_id="dify_web", @@ -2112,7 +2169,7 @@ _reg(StackWiring( _reg(StackWiring( tool_id="flowise", - layer="User Interfaces", + layer="Human Interface & System Operations", interfaces=[ ToolInterface( interface_id="flowise_web", @@ -2147,7 +2204,7 @@ _reg(StackWiring( _reg(StackWiring( tool_id="openjarvis", - layer="User Interfaces", + layer="Human Interface & System Operations", interfaces=[ ToolInterface( interface_id="openjarvis_web", @@ -2196,7 +2253,7 @@ _reg(StackWiring( _reg(StackWiring( tool_id="hermes", - layer="User Interfaces", + layer="Human Interface & System Operations", interfaces=[ ToolInterface( interface_id="hermes_web", @@ -2222,7 +2279,7 @@ _reg(StackWiring( _reg(StackWiring( tool_id="librechat", - layer="User Interfaces", + layer="Human Interface & System Operations", interfaces=[ ToolInterface( interface_id="librechat_web", @@ -2254,7 +2311,7 @@ _reg(StackWiring( _reg(StackWiring( tool_id="anythingllm", - layer="User Interfaces", + layer="Human Interface & System Operations", interfaces=[ ToolInterface( interface_id="anythingllm_web", @@ -2271,7 +2328,7 @@ _reg(StackWiring( _reg(StackWiring( tool_id="langflow", - layer="Orchestrators", + layer="Human Interface & System Operations", interfaces=[ ToolInterface( interface_id="langflow_web", @@ -2288,7 +2345,7 @@ _reg(StackWiring( _reg(StackWiring( tool_id="forge", - layer="User Interfaces", + layer="Human Interface & System Operations", interfaces=[ ToolInterface( interface_id="forge_web", @@ -2312,7 +2369,7 @@ _reg(StackWiring( _reg(StackWiring( tool_id="invokeai", - layer="User Interfaces", + layer="Human Interface & System Operations", interfaces=[ ToolInterface( interface_id="invokeai_web", @@ -2336,7 +2393,7 @@ _reg(StackWiring( _reg(StackWiring( tool_id="dashy", - layer="User Interfaces", + layer="Human Interface & System Operations", interfaces=[ ToolInterface( interface_id="dashy_web", @@ -2365,7 +2422,7 @@ for _tid in ["hermes_desktop", "local_llm_launcher"]: )) _reg(StackWiring( tool_id=_tid, - layer="User Interfaces", + layer=_wiring_layer(_tid), interfaces=[], connections=_conns, context=EngineeringContext( @@ -2376,12 +2433,12 @@ for _tid in ["hermes_desktop", "local_llm_launcher"]: # ────────────────────────────────────────────────────────────────── -# L12: DevOps +# L12: DevOps → Layer 9/10: Data Extraction + System Operations (10-layer taxonomy) # ────────────────────────────────────────────────────────────────── _reg(StackWiring( tool_id="opensandbox", - layer="Orchestrators", + layer="Host Platform & Infrastructure", interfaces=[ ToolInterface( interface_id="opensandbox_web", @@ -2439,7 +2496,7 @@ for _tid in [ )) _reg(StackWiring( tool_id=_tid, - layer="DevOps", + layer=_wiring_layer(_tid), interfaces=[], connections=_conns, context=EngineeringContext( @@ -2450,12 +2507,12 @@ for _tid in [ # ────────────────────────────────────────────────────────────────── -# L13: Knowledge Management +# L13: Knowledge Management → Layer 8/10: Vector Stores + System Operations (10-layer taxonomy) # ────────────────────────────────────────────────────────────────── _reg(StackWiring( tool_id="paperlessngx", - layer="Knowledge Management", + layer="Human Interface & System Operations", interfaces=[ ToolInterface( interface_id="paperlessngx_web", @@ -2518,7 +2575,7 @@ for _tid in [ ]: _reg(StackWiring( tool_id=_tid, - layer="Knowledge Management", + layer=_wiring_layer(_tid), interfaces=[], connections=[], context=EngineeringContext( @@ -2560,7 +2617,7 @@ _CODING_AGENT_CTX = EngineeringContext( _reg(StackWiring( tool_id="opencode", - layer="DevOps", + layer="Agentic Software Engineering & Sandboxes", interfaces=[], connections=[ Connection( @@ -2584,7 +2641,7 @@ _reg(StackWiring( _reg(StackWiring( tool_id="gemini_cli", - layer="DevOps", + layer="Agentic Software Engineering & Sandboxes", interfaces=[], connections=[ Connection( @@ -2608,7 +2665,7 @@ _reg(StackWiring( _reg(StackWiring( tool_id="qwen_code", - layer="DevOps", + layer="Agentic Software Engineering & Sandboxes", interfaces=[], connections=[ Connection( @@ -2632,7 +2689,7 @@ _reg(StackWiring( _reg(StackWiring( tool_id="goose", - layer="DevOps", + layer="Agentic Software Engineering & Sandboxes", interfaces=[], connections=[ Connection( @@ -2659,7 +2716,7 @@ _reg(StackWiring( # it was staged. This wiring closes that gap. _reg(StackWiring( tool_id="codex", - layer="DevOps", + layer="Agentic Software Engineering & Sandboxes", interfaces=[], connections=[ Connection( @@ -2683,7 +2740,7 @@ _reg(StackWiring( _reg(StackWiring( tool_id="letta", - layer="Orchestrators", + layer="Multi-Agent Orchestration Runtimes", interfaces=[ ToolInterface( interface_id="http_api", @@ -2745,7 +2802,7 @@ _reg(StackWiring( _reg(StackWiring( tool_id="sglang", - layer="Engines", + layer="Local Inference Engines", interfaces=[ ToolInterface( interface_id="openai_api", @@ -2799,7 +2856,7 @@ _reg(StackWiring( _reg(StackWiring( tool_id="jan", - layer="User Interfaces", + layer="Human Interface & System Operations", interfaces=[ ToolInterface( interface_id="openai_api", @@ -2835,7 +2892,7 @@ _reg(StackWiring( _reg(StackWiring( tool_id="mem0", - layer="Knowledge Management", + layer="Decentralized Knowledge & Vector Stores", interfaces=[], connections=[ Connection( @@ -2872,7 +2929,7 @@ _reg(StackWiring( _reg(StackWiring( tool_id="tinygrad", - layer="GPU Runtimes", + layer="GPU Acceleration & Optimization", interfaces=[], connections=[ Connection( @@ -3017,7 +3074,7 @@ def validate_wiring() -> list[str]: # ────────────────────────────────────────────────────────────────── _reg(StackWiring( tool_id="graphify", - layer="Orchestrators", + layer="Agentic Software Engineering & Sandboxes", interfaces=[ ToolInterface( interface_id="graphify_mcp", @@ -3119,7 +3176,7 @@ _reg(StackWiring( _reg(StackWiring( tool_id="meshllm", - layer="Routing", + layer="Intelligent API Routers & Proxies", interfaces=[ ToolInterface( interface_id="openai_api", @@ -3231,7 +3288,7 @@ _reg(StackWiring( # ────────────────────────────────────────────────────────────────── _reg(StackWiring( tool_id="picode", - layer="Routing", + layer="Agentic Software Engineering & Sandboxes", interfaces=[], connections=[ Connection( @@ -3282,7 +3339,7 @@ _reg(StackWiring( # ────────────────────────────────────────────────────────────────── _reg(StackWiring( tool_id="zcoder", - layer="DevOps", + layer="Agentic Software Engineering & Sandboxes", interfaces=[], connections=[ Connection( @@ -3324,7 +3381,7 @@ _reg(StackWiring( # ────────────────────────────────────────────────────────────────── _reg(StackWiring( tool_id="hermes_webui", - layer="User Interfaces", + layer="Human Interface & System Operations", interfaces=[ ToolInterface( interface_id="hermes_webui_http", diff --git a/src/ai_lsc/ui/pages/db_manager.py b/src/ai_lsc/ui/pages/db_manager.py index 82c8221..d5b569c 100755 --- a/src/ai_lsc/ui/pages/db_manager.py +++ b/src/ai_lsc/ui/pages/db_manager.py @@ -46,136 +46,231 @@ except ImportError: _HAS_QT = False # ── Category → default Layer / Level / Role mapping ────────────────── -# Derived from the canonical registry (11-layer taxonomy, v3.1.1b: -# Routing=L5, Orchestrators=L6, Security=L7, Observability=L8, -# User Interfaces=L9, DevOps=L10, Knowledge Management=L11). -# When the user picks a category these fields auto-fill; the user can -# still override afterwards. +# Derived from the canonical registry (10-Layer Systems Architecture +# Taxonomy). When the user picks a category these fields auto-fill; +# the user can still override afterwards. CATEGORY_MAP: dict[str, dict[str, object]] = { - "AI Agent": {"layer": "Orchestrators", "level": 6, "role": "Sensory Bridge"}, - "AI Assistant Platform": {"layer": "User Interfaces", "level": 9, "role": "Central Intelligence"}, - "AI Augmentation": {"layer": "Orchestrators", "level": 6, "role": "Curation"}, - "AI Coding Agent": {"layer": "DevOps", "level": 10, "role": "Coding Agent"}, - "AI Monitoring": {"layer": "Observability", "level": 8, "role": "Health Monitor"}, - "AI Observability": {"layer": "Observability", "level": 8, "role": "LLM Tracing"}, - "AI Operating System": {"layer": "DevOps", "level": 10, "role": "OS Integration"}, - "Academic References": {"layer": "Knowledge Management", "level": 11, "role": "Reference Manager"}, - "Agent Framework": {"layer": "Orchestrators", "level": 6, "role": "Multi-Agent"}, - "Agent Network": {"layer": "DevOps", "level": 10, "role": "Discovery"}, - "Agent OS": {"layer": "Orchestrators", "level": 6, "role": "Hands"}, - "Agent Toolkit": {"layer": "Orchestrators", "level": 6, "role": "Tool Integration"}, - "Agent Workflow": {"layer": "Orchestrators", "level": 6, "role": "Reasoning"}, - "Algorithm Toolkit": {"layer": "DevOps", "level": 10, "role": "Hands"}, - "Analytical Database": {"layer": "Host Platform", "level": 1, "role": "Foundation"}, - "Antivirus": {"layer": "Security", "level": 7, "role": "Scanner"}, - "Build": {"layer": "Development Environment", "level": 2, "role": "Build Tool"}, - "Audio Parsing": {"layer": "Knowledge Management", "level": 11, "role": "Memory"}, - "Auth": {"layer": "Security", "level": 7, "role": "Identity"}, - "Build Monitoring": {"layer": "Observability", "level": 8, "role": "Monitoring"}, - "Cache": {"layer": "Host Platform", "level": 1, "role": "Foundation"}, - "Chat": {"layer": "User Interfaces", "level": 9, "role": "Face"}, - "Chat Agent Platform": {"layer": "User Interfaces", "level": 9, "role": "Face"}, - "Chat Frontend": {"layer": "User Interfaces", "level": 9, "role": "Face"}, - "Claude Code Skill": {"layer": "Orchestrators", "level": 6, "role": "Knowledge Graph Builder"}, - "Cluster SSH": {"layer": "Orchestrators", "level": 6, "role": "Coordination"}, - "Code Analysis": {"layer": "DevOps", "level": 10, "role": "Inspector"}, - "Code Generation": {"layer": "DevOps", "level": 10, "role": "Hands"}, - "Computer Vision": {"layer": "User Interfaces", "level": 9, "role": "Vision"}, - "Config Management": {"layer": "DevOps", "level": 10, "role": "Configuration Management"}, - "Container Ops": {"layer": "Orchestrators", "level": 6, "role": "Sandbox"}, - "Container Security": {"layer": "Security", "level": 7, "role": "Scanner"}, - "Containers": {"layer": "Host Platform", "level": 1, "role": "Container Runtime"}, - "Context Manager": {"layer": "DevOps", "level": 10, "role": "Context"}, - "Cortex Memory": {"layer": "Knowledge Management", "level": 11, "role": "Memory"}, - "Dashboard": {"layer": "User Interfaces", "level": 9, "role": "Face"}, - "Data Pipeline": {"layer": "Knowledge Management", "level": 11, "role": "Ingestion"}, - "Data Sync": {"layer": "Knowledge Management", "level": 11, "role": "Integration"}, - "Debugging": {"layer": "Development Environment", "level": 2, "role": "Profiling"}, - "Database": {"layer": "Host Platform", "level": 1, "role": "Foundation"}, - "Desktop Agent": {"layer": "User Interfaces", "level": 9, "role": "Face"}, - "Dev Automation": {"layer": "DevOps", "level": 10, "role": "Hands"}, - "Development": {"layer": "DevOps", "level": 10, "role": "Hands"}, - "Distributed Compilation": {"layer": "Orchestrators", "level": 6, "role": "Distribution"}, - "Distributed Compute": {"layer": "Orchestrators", "level": 6, "role": "Scaling"}, - "Document Converter": {"layer": "Knowledge Management", "level": 11, "role": "File Parsing"}, - "Document Management": {"layer": "Knowledge Management", "level": 11, "role": "Document Archive"}, - "Document Understanding": {"layer": "Knowledge Management", "level": 11, "role": "Comprehension"}, - "Ebook Library": {"layer": "Knowledge Management", "level": 11, "role": "Library Manager"}, - "Ecosystem Dashboard": {"layer": "User Interfaces", "level": 9, "role": "Face"}, - "Efficient LLM": {"layer": "Engines", "level": 4, "role": "Engine"}, - "File Parsing": {"layer": "Knowledge Management", "level": 11, "role": "Memory"}, - "Find Tool": {"layer": "Development Environment", "level": 2, "role": "Search"}, - "GPU": {"layer": "GPU Runtimes", "level": 3, "role": "Acceleration"}, - "GPU Computing": {"layer": "Development Environment", "level": 2, "role": "GPU Acceleration"}, - "Graph Database": {"layer": "Knowledge Management", "level": 11, "role": "Memory"}, - "Graph RAG": {"layer": "Knowledge Management", "level": 11, "role": "Knowledge Synthesis"}, - "Homepage": {"layer": "User Interfaces", "level": 9, "role": "Face"}, - "IaC": {"layer": "DevOps", "level": 10, "role": "Infrastructure as Code"}, - "IaC Control Plane": {"layer": "DevOps", "level": 10, "role": "Infrastructure as Code"}, - "IaC Wrapper": {"layer": "DevOps", "level": 10, "role": "Infrastructure as Code"}, - "Image Generation": {"layer": "User Interfaces", "level": 9, "role": "Face"}, - "Infrastructure": {"layer": "Orchestrators", "level": 6, "role": "Resource Manager"}, - "Intrusion Prevention": {"layer": "Security", "level": 7, "role": "IDS"}, - "Knowledge Graph": {"layer": "DevOps", "level": 10, "role": "Graph Builder"}, - "Knowledge Graph Notes": {"layer": "User Interfaces", "level": 9, "role": "Face"}, - "LLM Evaluation": {"layer": "Observability", "level": 8, "role": "Evaluation"}, - "Memory System": {"layer": "Knowledge Management", "level": 11, "role": "Memory"}, - "LLM Fine-tuning": {"layer": "GPU Runtimes", "level": 3, "role": "Abliteration"}, - "LLM Framework": {"layer": "Orchestrators", "level": 6, "role": "Orchestration"}, - "LLM GUI": {"layer": "User Interfaces", "level": 9, "role": "Face"}, - "LLM Mesh": {"layer": "Routing", "level": 5, "role": "API Gateway"}, - "LLM Router": {"layer": "Routing", "level": 5, "role": "API Gateway"}, - "LLM Runtime": {"layer": "Engines", "level": 4, "role": "Engine"}, - "LLM Serving": {"layer": "Engines", "level": 4, "role": "Engine"}, - "MCP Server": {"layer": "Orchestrators", "level": 6, "role": "Code Audit"}, - "Metrics": {"layer": "Observability", "level": 8, "role": "Metrics Collector"}, - "Mesh Client": {"layer": "Routing", "level": 5, "role": "Coding Agent"}, - "Mixed Precision": {"layer": "GPU Runtimes", "level": 3, "role": "Optimization"}, - "Model Surgery": {"layer": "Engines", "level": 4, "role": "Abliteration"}, - "Model Training": {"layer": "Development Environment", "level": 2, "role": "Training"}, - "Multi-Agent": {"layer": "Orchestrators", "level": 6, "role": "Coordination"}, - "Networking": {"layer": "Host Platform", "level": 1, "role": "Tunnel"}, - "Notes": {"layer": "Knowledge Management", "level": 11, "role": "Note Taking"}, - "OCI Export": {"layer": "DevOps", "level": 10, "role": "Runtime Packaging"}, - "Observability": {"layer": "Observability", "level": 8, "role": "Monitoring"}, - "Outliner": {"layer": "Knowledge Management", "level": 11, "role": "Knowledge Graph"}, - "PDF Pipeline": {"layer": "Knowledge Management", "level": 11, "role": "Extraction"}, - "Parser": {"layer": "Development Environment", "level": 2, "role": "Parsing"}, - "Persistent Memory": {"layer": "Knowledge Management", "level": 11, "role": "Memory"}, - "Pipeline": {"layer": "Routing", "level": 5, "role": "Pipeline Orchestrator"}, - "Policy Engine": {"layer": "Security", "level": 7, "role": "Policy"}, - "Procfile Runner": {"layer": "DevOps", "level": 10, "role": "Process Manager"}, - "Project Management": {"layer": "DevOps", "level": 10, "role": "Management"}, - "Prompt Tooling": {"layer": "DevOps", "level": 10, "role": "Prompt Management"}, - "Provisioning": {"layer": "DevOps", "level": 10, "role": "Provisioning"}, - "Proxy": {"layer": "Routing", "level": 5, "role": "API Gateway"}, - "Reasoning Engine": {"layer": "Orchestrators", "level": 6, "role": "Brain"}, - "Runtime": {"layer": "Development Environment", "level": 2, "role": "Build System"}, - "Sandbox": {"layer": "DevOps", "level": 10, "role": "Isolation"}, - "Search Engine": {"layer": "Knowledge Management", "level": 11, "role": "Memory"}, - "Search Tool": {"layer": "Development Environment", "level": 2, "role": "Search"}, - "Shell": {"layer": "Development Environment", "level": 2, "role": "Shell"}, - "Secrets Management": {"layer": "Security", "level": 7, "role": "Secrets"}, - "Serverless Framework": {"layer": "Development Environment", "level": 2, "role": "Full-Stack Framework"}, - "Single-File LLM": {"layer": "Engines", "level": 4, "role": "Engine"}, - "Skill Analysis": {"layer": "DevOps", "level": 10, "role": "Assessment"}, - "Skill Inspection": {"layer": "DevOps", "level": 10, "role": "Analysis"}, - "Spaced Repetition": {"layer": "Knowledge Management", "level": 11, "role": "Memory"}, - "Spec Writer": {"layer": "DevOps", "level": 10, "role": "Documentation"}, - "Speech Recognition": {"layer": "User Interfaces", "level": 9, "role": "Senses"}, - "Task Runner": {"layer": "DevOps", "level": 10, "role": "Scheduler"}, - "Telemetry": {"layer": "Observability", "level": 8, "role": "Collector"}, - "Terminal": {"layer": "Host Platform", "level": 1, "role": "Multiplexer"}, - "Text-to-Speech": {"layer": "User Interfaces", "level": 9, "role": "Voice"}, - "Uncensored Models": {"layer": "Engines", "level": 4, "role": "Engine"}, - "VCS": {"layer": "Host Platform", "level": 1, "role": "Version Control"}, - "Vector Engine": {"layer": "Knowledge Management", "level": 11, "role": "Embedding"}, - "Vector Store": {"layer": "Knowledge Management", "level": 11, "role": "Memory"}, - "Visualization": {"layer": "Observability", "level": 8, "role": "Dashboard"}, - "Virtualization": {"layer": "Host Platform", "level": 1, "role": "MicroVM"}, - "Web Crawler": {"layer": "Knowledge Management", "level": 11, "role": "Data Harvesting"}, - "Workflow": {"layer": "Orchestrators", "level": 6, "role": "Visual Builder"}, - "Workflow Automation": {"layer": "Orchestrators", "level": 6, "role": "Workflow Orchestrator"}, + "AI Agent": {"layer": "Multi-Agent Orchestration Runtimes", "level": 6, "role": "AI Agent"}, + "AI Assistant Platform": {"layer": "Human Interface & System Operations", "level": 10, "role": "Central Intelligence"}, + "AI Augmentation": {"layer": "Multi-Agent Orchestration Runtimes", "level": 6, "role": "Curation"}, + "AI Coding Agent": {"layer": "Agentic Software Engineering & Sandboxes", "level": 7, "role": "AI Coding Agent"}, + "AI Monitoring": {"layer": "Human Interface & System Operations", "level": 10, "role": "Health Monitor"}, + "AI Observability": {"layer": "Human Interface & System Operations", "level": 10, "role": "LLM Tracing"}, + "AI Operating System": {"layer": "Multi-Agent Orchestration Runtimes", "level": 6, "role": "OS Integration"}, + "Academic References": {"layer": "Human Interface & System Operations", "level": 10, "role": "Reference Manager"}, + "Agent Daemon": {"layer": "Multi-Agent Orchestration Runtimes", "level": 6, "role": "Agent Daemon"}, + "Agent Framework": {"layer": "Multi-Agent Orchestration Runtimes", "level": 6, "role": "Agent Framework"}, + "Agent Network": {"layer": "Multi-Agent Orchestration Runtimes", "level": 6, "role": "Discovery"}, + "Agent OS": {"layer": "Multi-Agent Orchestration Runtimes", "level": 6, "role": "Agent OS"}, + "Agent Shell": {"layer": "Multi-Agent Orchestration Runtimes", "level": 6, "role": "Agent Shell"}, + "Agent Toolkit": {"layer": "Multi-Agent Orchestration Runtimes", "level": 6, "role": "Agent Toolkit"}, + "Agent Workflow": {"layer": "Multi-Agent Orchestration Runtimes", "level": 6, "role": "Agent Workflow"}, + "Agentless Deployment": {"layer": "Human Interface & System Operations", "level": 10, "role": "Agentless Deployment"}, + "Algorithm Toolkit": {"layer": "Multi-Agent Orchestration Runtimes", "level": 6, "role": "Hands"}, + "Alloy Telemetry": {"layer": "Human Interface & System Operations", "level": 10, "role": "Alloy Telemetry"}, + "Analytical Database": {"layer": "Host Platform & Infrastructure", "level": 1, "role": "Analytical Database"}, + "Antivirus": {"layer": "Human Interface & System Operations", "level": 10, "role": "Antivirus"}, + "Audio Extraction": {"layer": "Data Extraction & Pipeline Harvest", "level": 9, "role": "Audio Extraction"}, + "Audio Parsing": {"layer": "Data Extraction & Pipeline Harvest", "level": 9, "role": "Memory"}, + "Auth": {"layer": "Host Platform & Infrastructure", "level": 1, "role": "Auth"}, + "Auto Recovery Daemon": {"layer": "Human Interface & System Operations", "level": 10, "role": "Auto Recovery Daemon"}, + "Build": {"layer": "Development Runtime & Environment", "level": 2, "role": "Build"}, + "Build Monitoring": {"layer": "Development Runtime & Environment", "level": 2, "role": "Build Monitoring"}, + "CI/CD Orchestration": {"layer": "Agentic Software Engineering & Sandboxes", "level": 7, "role": "CI/CD Orchestration"}, + "CLI Pair Programmer": {"layer": "Agentic Software Engineering & Sandboxes", "level": 7, "role": "CLI Pair Programmer"}, + "Cache": {"layer": "Host Platform & Infrastructure", "level": 1, "role": "Cache"}, + "Chat": {"layer": "Human Interface & System Operations", "level": 10, "role": "Face"}, + "Chat Agent Platform": {"layer": "Human Interface & System Operations", "level": 10, "role": "Face"}, + "Chat Frontend": {"layer": "Human Interface & System Operations", "level": 10, "role": "Chat Frontend"}, + "Claude Code Skill": {"layer": "Agentic Software Engineering & Sandboxes", "level": 7, "role": "Claude Code Skill"}, + "Cloud Dev Kit": {"layer": "Human Interface & System Operations", "level": 10, "role": "Cloud Dev Kit"}, + "Cluster Homepage": {"layer": "Human Interface & System Operations", "level": 10, "role": "Cluster Homepage"}, + "Cluster SSH": {"layer": "Human Interface & System Operations", "level": 10, "role": "Cluster SSH"}, + "Code Analysis": {"layer": "Agentic Software Engineering & Sandboxes", "level": 7, "role": "Inspector"}, + "Code Generation": {"layer": "Agentic Software Engineering & Sandboxes", "level": 7, "role": "Hands"}, + "Code Refactoring": {"layer": "Agentic Software Engineering & Sandboxes", "level": 7, "role": "Code Refactoring"}, + "Codex Developer": {"layer": "Agentic Software Engineering & Sandboxes", "level": 7, "role": "Codex Developer"}, + "Collaborative Chat": {"layer": "Human Interface & System Operations", "level": 10, "role": "Collaborative Chat"}, + "Computer Vision": {"layer": "Data Extraction & Pipeline Harvest", "level": 9, "role": "Vision"}, + "Config Management": {"layer": "Human Interface & System Operations", "level": 10, "role": "Configuration Management"}, + "Container Ops": {"layer": "Host Platform & Infrastructure", "level": 1, "role": "Sandbox"}, + "Container Security": {"layer": "Human Interface & System Operations", "level": 10, "role": "Container Security"}, + "Containers": {"layer": "Host Platform & Infrastructure", "level": 1, "role": "Containers"}, + "Context Integrity Core": {"layer": "Agentic Software Engineering & Sandboxes", "level": 7, "role": "Context Integrity Core"}, + "Context Manager": {"layer": "Agentic Software Engineering & Sandboxes", "level": 7, "role": "Context"}, + "Coordination Protocol": {"layer": "Multi-Agent Orchestration Runtimes", "level": 6, "role": "Coordination Protocol"}, + "Cortex Memory": {"layer": "Decentralized Knowledge & Vector Stores", "level": 8, "role": "Cortex Memory"}, + "Curation Pipeline": {"layer": "Intelligent API Routers & Proxies", "level": 5, "role": "Curation Pipeline"}, + "Dashboard": {"layer": "Human Interface & System Operations", "level": 10, "role": "Face"}, + "Data Ingest": {"layer": "Data Extraction & Pipeline Harvest", "level": 9, "role": "Data Ingest"}, + "Data Pipeline": {"layer": "Data Extraction & Pipeline Harvest", "level": 9, "role": "Ingestion"}, + "Data Sync": {"layer": "Data Extraction & Pipeline Harvest", "level": 9, "role": "Integration"}, + "Database": {"layer": "Host Platform & Infrastructure", "level": 1, "role": "Database"}, + "Datacenter Inference": {"layer": "Local Inference Engines", "level": 4, "role": "Datacenter Inference"}, + "Debugging": {"layer": "Development Runtime & Environment", "level": 2, "role": "Debugging"}, + "Desktop Agent": {"layer": "Human Interface & System Operations", "level": 10, "role": "Face"}, + "Desktop Agent Core": {"layer": "Multi-Agent Orchestration Runtimes", "level": 6, "role": "Desktop Agent Core"}, + "Desktop GUI": {"layer": "Human Interface & System Operations", "level": 10, "role": "Desktop GUI"}, + "Dev Automation": {"layer": "Agentic Software Engineering & Sandboxes", "level": 7, "role": "Hands"}, + "Development": {"layer": "Agentic Software Engineering & Sandboxes", "level": 7, "role": "Hands"}, + "Distributed Compilation": {"layer": "Development Runtime & Environment", "level": 2, "role": "Distributed Compilation"}, + "Distributed Compute": {"layer": "Multi-Agent Orchestration Runtimes", "level": 6, "role": "Distributed Compute"}, + "Distributed Search": {"layer": "Decentralized Knowledge & Vector Stores", "level": 8, "role": "Distributed Search"}, + "Document Archiver": {"layer": "Human Interface & System Operations", "level": 10, "role": "Document Archiver"}, + "Document Comprehension": {"layer": "Data Extraction & Pipeline Harvest", "level": 9, "role": "Document Comprehension"}, + "Document Converter": {"layer": "Data Extraction & Pipeline Harvest", "level": 9, "role": "File Parsing"}, + "Document Management": {"layer": "Human Interface & System Operations", "level": 10, "role": "Document Archive"}, + "Document Parser": {"layer": "Data Extraction & Pipeline Harvest", "level": 9, "role": "Document Parser"}, + "Document Understanding": {"layer": "Data Extraction & Pipeline Harvest", "level": 9, "role": "Comprehension"}, + "ETL Transformation": {"layer": "Data Extraction & Pipeline Harvest", "level": 9, "role": "ETL Transformation"}, + "Ebook Library": {"layer": "Human Interface & System Operations", "level": 10, "role": "Library Manager"}, + "Ecosystem Dashboard": {"layer": "Human Interface & System Operations", "level": 10, "role": "Face"}, + "Ecosystem Launcher": {"layer": "Human Interface & System Operations", "level": 10, "role": "Ecosystem Launcher"}, + "Efficient LLM": {"layer": "Local Inference Engines", "level": 4, "role": "Engine"}, + "Enterprise Assistant": {"layer": "Human Interface & System Operations", "level": 10, "role": "Enterprise Assistant"}, + "Extensible Interface": {"layer": "Human Interface & System Operations", "level": 10, "role": "Extensible Interface"}, + "File Discovery": {"layer": "Development Runtime & Environment", "level": 2, "role": "File Discovery"}, + "File Parsing": {"layer": "Data Extraction & Pipeline Harvest", "level": 9, "role": "Memory"}, + "Find Tool": {"layer": "Development Runtime & Environment", "level": 2, "role": "Search"}, + "GGUF Runtime": {"layer": "Local Inference Engines", "level": 4, "role": "GGUF Runtime"}, + "GPU": {"layer": "GPU Acceleration & Optimization", "level": 3, "role": "Acceleration"}, + "GPU Computing": {"layer": "GPU Acceleration & Optimization", "level": 3, "role": "GPU Computing"}, + "Gap Analyzer": {"layer": "Human Interface & System Operations", "level": 10, "role": "Gap Analyzer"}, + "Graph Database": {"layer": "Decentralized Knowledge & Vector Stores", "level": 8, "role": "Graph Database"}, + "Graph RAG": {"layer": "Decentralized Knowledge & Vector Stores", "level": 8, "role": "Knowledge Synthesis"}, + "Hardware Acceleration": {"layer": "GPU Acceleration & Optimization", "level": 3, "role": "Hardware Acceleration"}, + "High-Performance Vector": {"layer": "Decentralized Knowledge & Vector Stores", "level": 8, "role": "High-Performance Vector"}, + "Homepage": {"layer": "Human Interface & System Operations", "level": 10, "role": "Face"}, + "IaC": {"layer": "Human Interface & System Operations", "level": 10, "role": "Infrastructure as Code"}, + "IaC Control Plane": {"layer": "Human Interface & System Operations", "level": 10, "role": "IaC Control Plane"}, + "IaC DRY Wrapper": {"layer": "Human Interface & System Operations", "level": 10, "role": "IaC DRY Wrapper"}, + "IaC Wrapper": {"layer": "Human Interface & System Operations", "level": 10, "role": "Infrastructure as Code"}, + "Image Generation": {"layer": "Human Interface & System Operations", "level": 10, "role": "Face"}, + "Image WebUI": {"layer": "Human Interface & System Operations", "level": 10, "role": "Image WebUI"}, + "Infrastructure": {"layer": "Multi-Agent Orchestration Runtimes", "level": 6, "role": "Infrastructure"}, + "Infrastructure Provision": {"layer": "Human Interface & System Operations", "level": 10, "role": "Infrastructure Provision"}, + "Infrastructure as Code": {"layer": "Development Runtime & Environment", "level": 2, "role": "Infrastructure as Code"}, + "Integration Library": {"layer": "Multi-Agent Orchestration Runtimes", "level": 6, "role": "Integration Library"}, + "Intrusion Prevention": {"layer": "Host Platform & Infrastructure", "level": 1, "role": "Intrusion Prevention"}, + "Isolation": {"layer": "Host Platform & Infrastructure", "level": 1, "role": "Isolation"}, + "Knowledge Graph": {"layer": "Decentralized Knowledge & Vector Stores", "level": 8, "role": "Graph Builder"}, + "Knowledge Graph Notes": {"layer": "Human Interface & System Operations", "level": 10, "role": "Face"}, + "LLM Evaluation": {"layer": "Human Interface & System Operations", "level": 10, "role": "Evaluation"}, + "LLM Fine-tuning": {"layer": "GPU Acceleration & Optimization", "level": 3, "role": "Abliteration"}, + "LLM Framework": {"layer": "Multi-Agent Orchestration Runtimes", "level": 6, "role": "Orchestration"}, + "LLM GUI": {"layer": "Human Interface & System Operations", "level": 10, "role": "LLM GUI"}, + "LLM Mesh": {"layer": "Intelligent API Routers & Proxies", "level": 5, "role": "LLM Mesh"}, + "LLM Observability": {"layer": "Human Interface & System Operations", "level": 10, "role": "LLM Observability"}, + "LLM Router": {"layer": "Intelligent API Routers & Proxies", "level": 5, "role": "API Gateway"}, + "LLM Runtime": {"layer": "Local Inference Engines", "level": 4, "role": "Engine"}, + "LLM Serving": {"layer": "Local Inference Engines", "level": 4, "role": "LLM Serving"}, + "Layer-wise Inference": {"layer": "Local Inference Engines", "level": 4, "role": "Layer-wise Inference"}, + "Learning Cards": {"layer": "Human Interface & System Operations", "level": 10, "role": "Learning Cards"}, + "Lexical Search": {"layer": "Decentralized Knowledge & Vector Stores", "level": 8, "role": "Lexical Search"}, + "Library Manager": {"layer": "Human Interface & System Operations", "level": 10, "role": "Library Manager"}, + "Load Balancer": {"layer": "Intelligent API Routers & Proxies", "level": 5, "role": "Load Balancer"}, + "Local Central Shell": {"layer": "Human Interface & System Operations", "level": 10, "role": "Local Central Shell"}, + "Local Declarative DSL": {"layer": "Human Interface & System Operations", "level": 10, "role": "Local Declarative DSL"}, + "Local LLM Runner": {"layer": "Local Inference Engines", "level": 4, "role": "Local LLM Runner"}, + "MCP Server": {"layer": "Agentic Software Engineering & Sandboxes", "level": 7, "role": "Code Audit"}, + "Markdown Converter": {"layer": "Data Extraction & Pipeline Harvest", "level": 9, "role": "Markdown Converter"}, + "Memory System": {"layer": "Decentralized Knowledge & Vector Stores", "level": 8, "role": "Memory System"}, + "Mesh Client": {"layer": "Agentic Software Engineering & Sandboxes", "level": 7, "role": "Mesh Client"}, + "Metal Provisioner": {"layer": "Human Interface & System Operations", "level": 10, "role": "Metal Provisioner"}, + "Metric Scraper": {"layer": "Human Interface & System Operations", "level": 10, "role": "Metric Scraper"}, + "Metrics": {"layer": "Human Interface & System Operations", "level": 10, "role": "Metrics"}, + "Mixed Precision": {"layer": "GPU Acceleration & Optimization", "level": 3, "role": "Mixed Precision"}, + "Model Curation": {"layer": "Local Inference Engines", "level": 4, "role": "Model Curation"}, + "Model Manager GUI": {"layer": "Human Interface & System Operations", "level": 10, "role": "Model Manager GUI"}, + "Model Optimization": {"layer": "GPU Acceleration & Optimization", "level": 3, "role": "Model Optimization"}, + "Model Surgery": {"layer": "Local Inference Engines", "level": 4, "role": "Model Surgery"}, + "Model Training": {"layer": "GPU Acceleration & Optimization", "level": 3, "role": "Training"}, + "Multi-Agent": {"layer": "Multi-Agent Orchestration Runtimes", "level": 6, "role": "Multi-Agent"}, + "Multi-Agent Framework": {"layer": "Multi-Agent Orchestration Runtimes", "level": 6, "role": "Multi-Agent Framework"}, + "Native Inference": {"layer": "Local Inference Engines", "level": 4, "role": "Native Inference"}, + "Networking": {"layer": "Host Platform & Infrastructure", "level": 1, "role": "Networking"}, + "Notes": {"layer": "Human Interface & System Operations", "level": 10, "role": "Note Taking"}, + "OCI Export": {"layer": "Host Platform & Infrastructure", "level": 1, "role": "Runtime Packaging"}, + "Observability": {"layer": "Human Interface & System Operations", "level": 10, "role": "Observability"}, + "Offline Journal": {"layer": "Human Interface & System Operations", "level": 10, "role": "Offline Journal"}, + "Open-Source IaC": {"layer": "Human Interface & System Operations", "level": 10, "role": "Open-Source IaC"}, + "Outliner": {"layer": "Human Interface & System Operations", "level": 10, "role": "Knowledge Graph"}, + "Outliner Graph": {"layer": "Human Interface & System Operations", "level": 10, "role": "Outliner Graph"}, + "Output Evaluator": {"layer": "Human Interface & System Operations", "level": 10, "role": "Output Evaluator"}, + "PDF Pipeline": {"layer": "Data Extraction & Pipeline Harvest", "level": 9, "role": "Extraction"}, + "PDF Processing": {"layer": "Data Extraction & Pipeline Harvest", "level": 9, "role": "PDF Processing"}, + "Parser": {"layer": "Development Runtime & Environment", "level": 2, "role": "Parsing"}, + "Parsing Engine": {"layer": "Development Runtime & Environment", "level": 2, "role": "Parsing Engine"}, + "Performance Engine": {"layer": "Local Inference Engines", "level": 4, "role": "Performance Engine"}, + "Persistent Memory": {"layer": "Decentralized Knowledge & Vector Stores", "level": 8, "role": "Persistent Memory"}, + "Pipeline": {"layer": "Intelligent API Routers & Proxies", "level": 5, "role": "Pipeline Orchestrator"}, + "Platform Workspace": {"layer": "Human Interface & System Operations", "level": 10, "role": "Platform Workspace"}, + "Policy Engine": {"layer": "Human Interface & System Operations", "level": 10, "role": "Policy Engine"}, + "Procfile Runner": {"layer": "Multi-Agent Orchestration Runtimes", "level": 6, "role": "Process Manager"}, + "Production Multi-Agent": {"layer": "Multi-Agent Orchestration Runtimes", "level": 6, "role": "Production Multi-Agent"}, + "Programmable IaC": {"layer": "Human Interface & System Operations", "level": 10, "role": "Programmable IaC"}, + "Project Management": {"layer": "Human Interface & System Operations", "level": 10, "role": "Project Management"}, + "Prompt Tester": {"layer": "Agentic Software Engineering & Sandboxes", "level": 7, "role": "Prompt Tester"}, + "Prompt Tooling": {"layer": "Agentic Software Engineering & Sandboxes", "level": 7, "role": "Prompt Management"}, + "Provisioning": {"layer": "Human Interface & System Operations", "level": 10, "role": "Provisioning"}, + "Proxy": {"layer": "Intelligent API Routers & Proxies", "level": 5, "role": "API Gateway"}, + "RAG Flow Canvas": {"layer": "Human Interface & System Operations", "level": 10, "role": "RAG Flow Canvas"}, + "Reasoning Engine": {"layer": "Multi-Agent Orchestration Runtimes", "level": 6, "role": "Reasoning Engine"}, + "Reference Manager": {"layer": "Human Interface & System Operations", "level": 10, "role": "Reference Manager"}, + "Requirement Builder": {"layer": "Agentic Software Engineering & Sandboxes", "level": 7, "role": "Requirement Builder"}, + "Role-Playing Agent": {"layer": "Multi-Agent Orchestration Runtimes", "level": 6, "role": "Role-Playing Agent"}, + "Runtime": {"layer": "Development Runtime & Environment", "level": 2, "role": "Runtime"}, + "Runtime Environment": {"layer": "Development Runtime & Environment", "level": 2, "role": "Runtime Environment"}, + "Runtime Packaging": {"layer": "Host Platform & Infrastructure", "level": 1, "role": "Runtime Packaging"}, + "Sandbox": {"layer": "Host Platform & Infrastructure", "level": 1, "role": "Isolation"}, + "Search Engine": {"layer": "Decentralized Knowledge & Vector Stores", "level": 8, "role": "Memory"}, + "Search Tool": {"layer": "Development Runtime & Environment", "level": 2, "role": "Search"}, + "Secrets Management": {"layer": "Host Platform & Infrastructure", "level": 1, "role": "Secrets Management"}, + "Serverless Database": {"layer": "Decentralized Knowledge & Vector Stores", "level": 8, "role": "Serverless Database"}, + "Serverless Framework": {"layer": "Development Runtime & Environment", "level": 2, "role": "Full-Stack Framework"}, + "Shell": {"layer": "Development Runtime & Environment", "level": 2, "role": "Shell"}, + "Single-File LLM": {"layer": "Local Inference Engines", "level": 4, "role": "Engine"}, + "Single-File Runtime": {"layer": "Local Inference Engines", "level": 4, "role": "Single-File Runtime"}, + "Skill Analysis": {"layer": "Agentic Software Engineering & Sandboxes", "level": 7, "role": "Assessment"}, + "Skill Auditor": {"layer": "Agentic Software Engineering & Sandboxes", "level": 7, "role": "Skill Auditor"}, + "Skill Inspection": {"layer": "Agentic Software Engineering & Sandboxes", "level": 7, "role": "Analysis"}, + "Sovereign Graph Editor": {"layer": "Human Interface & System Operations", "level": 10, "role": "Sovereign Graph Editor"}, + "Sovereign Software Agent": {"layer": "Agentic Software Engineering & Sandboxes", "level": 7, "role": "Sovereign Software Agent"}, + "Spaced Repetition": {"layer": "Human Interface & System Operations", "level": 10, "role": "Memory"}, + "Spec Writer": {"layer": "Agentic Software Engineering & Sandboxes", "level": 7, "role": "Documentation"}, + "Speech Recognition": {"layer": "Data Extraction & Pipeline Harvest", "level": 9, "role": "Senses"}, + "Speech Transcriber": {"layer": "Data Extraction & Pipeline Harvest", "level": 9, "role": "Speech Transcriber"}, + "Sprint Planner": {"layer": "Human Interface & System Operations", "level": 10, "role": "Sprint Planner"}, + "Sprints Manager": {"layer": "Human Interface & System Operations", "level": 10, "role": "Sprints Manager"}, + "Stateless Orchestration": {"layer": "Multi-Agent Orchestration Runtimes", "level": 6, "role": "Stateless Orchestration"}, + "Structured Synthesis": {"layer": "Decentralized Knowledge & Vector Stores", "level": 8, "role": "Structured Synthesis"}, + "Studio Canvas": {"layer": "Human Interface & System Operations", "level": 10, "role": "Studio Canvas"}, + "Synchronization Layer": {"layer": "Data Extraction & Pipeline Harvest", "level": 9, "role": "Synchronization Layer"}, + "System Auditor": {"layer": "Human Interface & System Operations", "level": 10, "role": "System Auditor"}, + "System Console": {"layer": "Human Interface & System Operations", "level": 10, "role": "System Console"}, + "Task Runner": {"layer": "Human Interface & System Operations", "level": 10, "role": "Scheduler"}, + "Telemetry": {"layer": "Human Interface & System Operations", "level": 10, "role": "Collector"}, + "Telemetry Monitor": {"layer": "Human Interface & System Operations", "level": 10, "role": "Telemetry Monitor"}, + "Telemetry Visualizer": {"layer": "Human Interface & System Operations", "level": 10, "role": "Telemetry Visualizer"}, + "Terminal": {"layer": "Host Platform & Infrastructure", "level": 1, "role": "Terminal"}, + "Terminal Agent": {"layer": "Multi-Agent Orchestration Runtimes", "level": 6, "role": "Terminal Agent"}, + "Terminal Coding Agent": {"layer": "Agentic Software Engineering & Sandboxes", "level": 7, "role": "Terminal Coding Agent"}, + "Text Search": {"layer": "Development Runtime & Environment", "level": 2, "role": "Text Search"}, + "Text-to-Speech": {"layer": "Data Extraction & Pipeline Harvest", "level": 9, "role": "Voice"}, + "Uncensored Models": {"layer": "Local Inference Engines", "level": 4, "role": "Engine"}, + "Unified API Gateway": {"layer": "Intelligent API Routers & Proxies", "level": 5, "role": "Unified API Gateway"}, + "VCS": {"layer": "Development Runtime & Environment", "level": 2, "role": "VCS"}, + "Vector Engine": {"layer": "Decentralized Knowledge & Vector Stores", "level": 8, "role": "Vector Engine"}, + "Vector Store": {"layer": "Decentralized Knowledge & Vector Stores", "level": 8, "role": "Memory"}, + "Virtualization": {"layer": "Host Platform & Infrastructure", "level": 1, "role": "Virtualization"}, + "Vision describer": {"layer": "Data Extraction & Pipeline Harvest", "level": 9, "role": "Vision describer"}, + "Visual Agent Canvas": {"layer": "Human Interface & System Operations", "level": 10, "role": "Visual Agent Canvas"}, + "Visualization": {"layer": "Human Interface & System Operations", "level": 10, "role": "Dashboard"}, + "Voice Synthesis": {"layer": "Data Extraction & Pipeline Harvest", "level": 9, "role": "Voice Synthesis"}, + "Web Crawler": {"layer": "Data Extraction & Pipeline Harvest", "level": 9, "role": "Data Harvesting"}, + "Web Scraper": {"layer": "Data Extraction & Pipeline Harvest", "level": 9, "role": "Web Scraper"}, + "Workflow": {"layer": "Human Interface & System Operations", "level": 10, "role": "Visual Builder"}, + "Workflow Automation": {"layer": "Multi-Agent Orchestration Runtimes", "level": 6, "role": "Workflow Automation"}, } # ── Field-constant lookups (populated once on first use) ───────────── diff --git a/src/ai_lsc/ui/pages/db_manager_category_map.py b/src/ai_lsc/ui/pages/db_manager_category_map.py new file mode 100755 index 0000000..ab580b2 --- /dev/null +++ b/src/ai_lsc/ui/pages/db_manager_category_map.py @@ -0,0 +1,226 @@ +# This file contains the fully reorganized CATEGORY_MAP for db_manager.py +# mapped cleanly to the 10-Layer Systems Architecture. + +CATEGORY_MAP: dict[str, dict[str, object]] = { + "AI Agent": {"layer": "Multi-Agent Orchestration Runtimes", "level": 6, "role": "AI Agent"}, + "AI Assistant Platform": {"layer": "Human Interface & System Operations", "level": 10, "role": "Central Intelligence"}, + "AI Augmentation": {"layer": "Multi-Agent Orchestration Runtimes", "level": 6, "role": "Curation"}, + "AI Coding Agent": {"layer": "Agentic Software Engineering & Sandboxes", "level": 7, "role": "AI Coding Agent"}, + "AI Monitoring": {"layer": "Human Interface & System Operations", "level": 10, "role": "Health Monitor"}, + "AI Observability": {"layer": "Human Interface & System Operations", "level": 10, "role": "LLM Tracing"}, + "AI Operating System": {"layer": "Multi-Agent Orchestration Runtimes", "level": 6, "role": "OS Integration"}, + "Academic References": {"layer": "Human Interface & System Operations", "level": 10, "role": "Reference Manager"}, + "Agent Daemon": {"layer": "Multi-Agent Orchestration Runtimes", "level": 6, "role": "Agent Daemon"}, + "Agent Framework": {"layer": "Multi-Agent Orchestration Runtimes", "level": 6, "role": "Agent Framework"}, + "Agent Network": {"layer": "Multi-Agent Orchestration Runtimes", "level": 6, "role": "Discovery"}, + "Agent OS": {"layer": "Multi-Agent Orchestration Runtimes", "level": 6, "role": "Agent OS"}, + "Agent Shell": {"layer": "Multi-Agent Orchestration Runtimes", "level": 6, "role": "Agent Shell"}, + "Agent Toolkit": {"layer": "Multi-Agent Orchestration Runtimes", "level": 6, "role": "Agent Toolkit"}, + "Agent Workflow": {"layer": "Multi-Agent Orchestration Runtimes", "level": 6, "role": "Agent Workflow"}, + "Agentless Deployment": {"layer": "Human Interface & System Operations", "level": 10, "role": "Agentless Deployment"}, + "Algorithm Toolkit": {"layer": "Multi-Agent Orchestration Runtimes", "level": 6, "role": "Hands"}, + "Alloy Telemetry": {"layer": "Human Interface & System Operations", "level": 10, "role": "Alloy Telemetry"}, + "Analytical Database": {"layer": "Host Platform & Infrastructure", "level": 1, "role": "Analytical Database"}, + "Antivirus": {"layer": "Human Interface & System Operations", "level": 10, "role": "Antivirus"}, + "Audio Extraction": {"layer": "Data Extraction & Pipeline Harvest", "level": 9, "role": "Audio Extraction"}, + "Audio Parsing": {"layer": "Data Extraction & Pipeline Harvest", "level": 9, "role": "Memory"}, + "Auth": {"layer": "Host Platform & Infrastructure", "level": 1, "role": "Auth"}, + "Auto Recovery Daemon": {"layer": "Human Interface & System Operations", "level": 10, "role": "Auto Recovery Daemon"}, + "Build": {"layer": "Development Runtime & Environment", "level": 2, "role": "Build"}, + "Build Monitoring": {"layer": "Development Runtime & Environment", "level": 2, "role": "Build Monitoring"}, + "CI/CD Orchestration": {"layer": "Agentic Software Engineering & Sandboxes", "level": 7, "role": "CI/CD Orchestration"}, + "CLI Pair Programmer": {"layer": "Agentic Software Engineering & Sandboxes", "level": 7, "role": "CLI Pair Programmer"}, + "Cache": {"layer": "Host Platform & Infrastructure", "level": 1, "role": "Cache"}, + "Chat": {"layer": "Human Interface & System Operations", "level": 10, "role": "Face"}, + "Chat Agent Platform": {"layer": "Human Interface & System Operations", "level": 10, "role": "Face"}, + "Chat Frontend": {"layer": "Human Interface & System Operations", "level": 10, "role": "Chat Frontend"}, + "Claude Code Skill": {"layer": "Agentic Software Engineering & Sandboxes", "level": 7, "role": "Claude Code Skill"}, + "Cloud Dev Kit": {"layer": "Human Interface & System Operations", "level": 10, "role": "Cloud Dev Kit"}, + "Cluster Homepage": {"layer": "Human Interface & System Operations", "level": 10, "role": "Cluster Homepage"}, + "Cluster SSH": {"layer": "Human Interface & System Operations", "level": 10, "role": "Cluster SSH"}, + "Code Analysis": {"layer": "Agentic Software Engineering & Sandboxes", "level": 7, "role": "Inspector"}, + "Code Generation": {"layer": "Agentic Software Engineering & Sandboxes", "level": 7, "role": "Hands"}, + "Code Refactoring": {"layer": "Agentic Software Engineering & Sandboxes", "level": 7, "role": "Code Refactoring"}, + "Codex Developer": {"layer": "Agentic Software Engineering & Sandboxes", "level": 7, "role": "Codex Developer"}, + "Collaborative Chat": {"layer": "Human Interface & System Operations", "level": 10, "role": "Collaborative Chat"}, + "Computer Vision": {"layer": "Data Extraction & Pipeline Harvest", "level": 9, "role": "Vision"}, + "Config Management": {"layer": "Human Interface & System Operations", "level": 10, "role": "Configuration Management"}, + "Container Ops": {"layer": "Host Platform & Infrastructure", "level": 1, "role": "Sandbox"}, + "Container Security": {"layer": "Human Interface & System Operations", "level": 10, "role": "Container Security"}, + "Containers": {"layer": "Host Platform & Infrastructure", "level": 1, "role": "Containers"}, + "Context Integrity Core": {"layer": "Agentic Software Engineering & Sandboxes", "level": 7, "role": "Context Integrity Core"}, + "Context Manager": {"layer": "Agentic Software Engineering & Sandboxes", "level": 7, "role": "Context"}, + "Coordination Protocol": {"layer": "Multi-Agent Orchestration Runtimes", "level": 6, "role": "Coordination Protocol"}, + "Cortex Memory": {"layer": "Decentralized Knowledge & Vector Stores", "level": 8, "role": "Cortex Memory"}, + "Curation Pipeline": {"layer": "Intelligent API Routers & Proxies", "level": 5, "role": "Curation Pipeline"}, + "Dashboard": {"layer": "Human Interface & System Operations", "level": 10, "role": "Face"}, + "Data Ingest": {"layer": "Data Extraction & Pipeline Harvest", "level": 9, "role": "Data Ingest"}, + "Data Pipeline": {"layer": "Data Extraction & Pipeline Harvest", "level": 9, "role": "Ingestion"}, + "Data Sync": {"layer": "Data Extraction & Pipeline Harvest", "level": 9, "role": "Integration"}, + "Database": {"layer": "Host Platform & Infrastructure", "level": 1, "role": "Database"}, + "Datacenter Inference": {"layer": "Local Inference Engines", "level": 4, "role": "Datacenter Inference"}, + "Debugging": {"layer": "Development Runtime & Environment", "level": 2, "role": "Debugging"}, + "Desktop Agent": {"layer": "Human Interface & System Operations", "level": 10, "role": "Face"}, + "Desktop Agent Core": {"layer": "Multi-Agent Orchestration Runtimes", "level": 6, "role": "Desktop Agent Core"}, + "Desktop GUI": {"layer": "Human Interface & System Operations", "level": 10, "role": "Desktop GUI"}, + "Dev Automation": {"layer": "Agentic Software Engineering & Sandboxes", "level": 7, "role": "Hands"}, + "Development": {"layer": "Agentic Software Engineering & Sandboxes", "level": 7, "role": "Hands"}, + "Distributed Compilation": {"layer": "Development Runtime & Environment", "level": 2, "role": "Distributed Compilation"}, + "Distributed Compute": {"layer": "Multi-Agent Orchestration Runtimes", "level": 6, "role": "Distributed Compute"}, + "Distributed Search": {"layer": "Decentralized Knowledge & Vector Stores", "level": 8, "role": "Distributed Search"}, + "Document Archiver": {"layer": "Human Interface & System Operations", "level": 10, "role": "Document Archiver"}, + "Document Comprehension": {"layer": "Data Extraction & Pipeline Harvest", "level": 9, "role": "Document Comprehension"}, + "Document Converter": {"layer": "Data Extraction & Pipeline Harvest", "level": 9, "role": "File Parsing"}, + "Document Management": {"layer": "Human Interface & System Operations", "level": 10, "role": "Document Archive"}, + "Document Parser": {"layer": "Data Extraction & Pipeline Harvest", "level": 9, "role": "Document Parser"}, + "Document Understanding": {"layer": "Data Extraction & Pipeline Harvest", "level": 9, "role": "Comprehension"}, + "ETL Transformation": {"layer": "Data Extraction & Pipeline Harvest", "level": 9, "role": "ETL Transformation"}, + "Ebook Library": {"layer": "Human Interface & System Operations", "level": 10, "role": "Library Manager"}, + "Ecosystem Dashboard": {"layer": "Human Interface & System Operations", "level": 10, "role": "Face"}, + "Ecosystem Launcher": {"layer": "Human Interface & System Operations", "level": 10, "role": "Ecosystem Launcher"}, + "Efficient LLM": {"layer": "Local Inference Engines", "level": 4, "role": "Engine"}, + "Enterprise Assistant": {"layer": "Human Interface & System Operations", "level": 10, "role": "Enterprise Assistant"}, + "Extensible Interface": {"layer": "Human Interface & System Operations", "level": 10, "role": "Extensible Interface"}, + "File Discovery": {"layer": "Development Runtime & Environment", "level": 2, "role": "File Discovery"}, + "File Parsing": {"layer": "Data Extraction & Pipeline Harvest", "level": 9, "role": "Memory"}, + "Find Tool": {"layer": "Development Runtime & Environment", "level": 2, "role": "Search"}, + "GGUF Runtime": {"layer": "Local Inference Engines", "level": 4, "role": "GGUF Runtime"}, + "GPU": {"layer": "GPU Acceleration & Optimization", "level": 3, "role": "Acceleration"}, + "GPU Computing": {"layer": "GPU Acceleration & Optimization", "level": 3, "role": "GPU Computing"}, + "Gap Analyzer": {"layer": "Human Interface & System Operations", "level": 10, "role": "Gap Analyzer"}, + "Graph Database": {"layer": "Decentralized Knowledge & Vector Stores", "level": 8, "role": "Graph Database"}, + "Graph RAG": {"layer": "Decentralized Knowledge & Vector Stores", "level": 8, "role": "Knowledge Synthesis"}, + "Hardware Acceleration": {"layer": "GPU Acceleration & Optimization", "level": 3, "role": "Hardware Acceleration"}, + "High-Performance Vector": {"layer": "Decentralized Knowledge & Vector Stores", "level": 8, "role": "High-Performance Vector"}, + "Homepage": {"layer": "Human Interface & System Operations", "level": 10, "role": "Face"}, + "IaC": {"layer": "Human Interface & System Operations", "level": 10, "role": "Infrastructure as Code"}, + "IaC Control Plane": {"layer": "Human Interface & System Operations", "level": 10, "role": "IaC Control Plane"}, + "IaC DRY Wrapper": {"layer": "Human Interface & System Operations", "level": 10, "role": "IaC DRY Wrapper"}, + "IaC Wrapper": {"layer": "Human Interface & System Operations", "level": 10, "role": "Infrastructure as Code"}, + "Image Generation": {"layer": "Human Interface & System Operations", "level": 10, "role": "Face"}, + "Image WebUI": {"layer": "Human Interface & System Operations", "level": 10, "role": "Image WebUI"}, + "Infrastructure": {"layer": "Multi-Agent Orchestration Runtimes", "level": 6, "role": "Infrastructure"}, + "Infrastructure Provision": {"layer": "Human Interface & System Operations", "level": 10, "role": "Infrastructure Provision"}, + "Infrastructure as Code": {"layer": "Development Runtime & Environment", "level": 2, "role": "Infrastructure as Code"}, + "Integration Library": {"layer": "Multi-Agent Orchestration Runtimes", "level": 6, "role": "Integration Library"}, + "Intrusion Prevention": {"layer": "Host Platform & Infrastructure", "level": 1, "role": "Intrusion Prevention"}, + "Isolation": {"layer": "Host Platform & Infrastructure", "level": 1, "role": "Isolation"}, + "Knowledge Graph": {"layer": "Decentralized Knowledge & Vector Stores", "level": 8, "role": "Graph Builder"}, + "Knowledge Graph Notes": {"layer": "Human Interface & System Operations", "level": 10, "role": "Face"}, + "LLM Evaluation": {"layer": "Human Interface & System Operations", "level": 10, "role": "Evaluation"}, + "LLM Fine-tuning": {"layer": "GPU Acceleration & Optimization", "level": 3, "role": "Abliteration"}, + "LLM Framework": {"layer": "Multi-Agent Orchestration Runtimes", "level": 6, "role": "Orchestration"}, + "LLM GUI": {"layer": "Human Interface & System Operations", "level": 10, "role": "LLM GUI"}, + "LLM Mesh": {"layer": "Intelligent API Routers & Proxies", "level": 5, "role": "LLM Mesh"}, + "LLM Observability": {"layer": "Human Interface & System Operations", "level": 10, "role": "LLM Observability"}, + "LLM Router": {"layer": "Intelligent API Routers & Proxies", "level": 5, "role": "API Gateway"}, + "LLM Runtime": {"layer": "Local Inference Engines", "level": 4, "role": "Engine"}, + "LLM Serving": {"layer": "Local Inference Engines", "level": 4, "role": "LLM Serving"}, + "Layer-wise Inference": {"layer": "Local Inference Engines", "level": 4, "role": "Layer-wise Inference"}, + "Learning Cards": {"layer": "Human Interface & System Operations", "level": 10, "role": "Learning Cards"}, + "Lexical Search": {"layer": "Decentralized Knowledge & Vector Stores", "level": 8, "role": "Lexical Search"}, + "Library Manager": {"layer": "Human Interface & System Operations", "level": 10, "role": "Library Manager"}, + "Load Balancer": {"layer": "Intelligent API Routers & Proxies", "level": 5, "role": "Load Balancer"}, + "Local Central Shell": {"layer": "Human Interface & System Operations", "level": 10, "role": "Local Central Shell"}, + "Local Declarative DSL": {"layer": "Human Interface & System Operations", "level": 10, "role": "Local Declarative DSL"}, + "Local LLM Runner": {"layer": "Local Inference Engines", "level": 4, "role": "Local LLM Runner"}, + "MCP Server": {"layer": "Agentic Software Engineering & Sandboxes", "level": 7, "role": "Code Audit"}, + "Markdown Converter": {"layer": "Data Extraction & Pipeline Harvest", "level": 9, "role": "Markdown Converter"}, + "Memory System": {"layer": "Decentralized Knowledge & Vector Stores", "level": 8, "role": "Memory System"}, + "Mesh Client": {"layer": "Agentic Software Engineering & Sandboxes", "level": 7, "role": "Mesh Client"}, + "Metal Provisioner": {"layer": "Human Interface & System Operations", "level": 10, "role": "Metal Provisioner"}, + "Metric Scraper": {"layer": "Human Interface & System Operations", "level": 10, "role": "Metric Scraper"}, + "Metrics": {"layer": "Human Interface & System Operations", "level": 10, "role": "Metrics"}, + "Mixed Precision": {"layer": "GPU Acceleration & Optimization", "level": 3, "role": "Mixed Precision"}, + "Model Curation": {"layer": "Local Inference Engines", "level": 4, "role": "Model Curation"}, + "Model Manager GUI": {"layer": "Human Interface & System Operations", "level": 10, "role": "Model Manager GUI"}, + "Model Optimization": {"layer": "GPU Acceleration & Optimization", "level": 3, "role": "Model Optimization"}, + "Model Surgery": {"layer": "Local Inference Engines", "level": 4, "role": "Model Surgery"}, + "Model Training": {"layer": "GPU Acceleration & Optimization", "level": 3, "role": "Training"}, + "Multi-Agent": {"layer": "Multi-Agent Orchestration Runtimes", "level": 6, "role": "Multi-Agent"}, + "Multi-Agent Framework": {"layer": "Multi-Agent Orchestration Runtimes", "level": 6, "role": "Multi-Agent Framework"}, + "Native Inference": {"layer": "Local Inference Engines", "level": 4, "role": "Native Inference"}, + "Networking": {"layer": "Host Platform & Infrastructure", "level": 1, "role": "Networking"}, + "Notes": {"layer": "Human Interface & System Operations", "level": 10, "role": "Note Taking"}, + "OCI Export": {"layer": "Host Platform & Infrastructure", "level": 1, "role": "Runtime Packaging"}, + "Observability": {"layer": "Human Interface & System Operations", "level": 10, "role": "Observability"}, + "Offline Journal": {"layer": "Human Interface & System Operations", "level": 10, "role": "Offline Journal"}, + "Open-Source IaC": {"layer": "Human Interface & System Operations", "level": 10, "role": "Open-Source IaC"}, + "Outliner": {"layer": "Human Interface & System Operations", "level": 10, "role": "Knowledge Graph"}, + "Outliner Graph": {"layer": "Human Interface & System Operations", "level": 10, "role": "Outliner Graph"}, + "Output Evaluator": {"layer": "Human Interface & System Operations", "level": 10, "role": "Output Evaluator"}, + "PDF Pipeline": {"layer": "Data Extraction & Pipeline Harvest", "level": 9, "role": "Extraction"}, + "PDF Processing": {"layer": "Data Extraction & Pipeline Harvest", "level": 9, "role": "PDF Processing"}, + "Parser": {"layer": "Development Runtime & Environment", "level": 2, "role": "Parsing"}, + "Parsing Engine": {"layer": "Development Runtime & Environment", "level": 2, "role": "Parsing Engine"}, + "Performance Engine": {"layer": "Local Inference Engines", "level": 4, "role": "Performance Engine"}, + "Persistent Memory": {"layer": "Decentralized Knowledge & Vector Stores", "level": 8, "role": "Persistent Memory"}, + "Pipeline": {"layer": "Intelligent API Routers & Proxies", "level": 5, "role": "Pipeline Orchestrator"}, + "Platform Workspace": {"layer": "Human Interface & System Operations", "level": 10, "role": "Platform Workspace"}, + "Policy Engine": {"layer": "Human Interface & System Operations", "level": 10, "role": "Policy Engine"}, + "Procfile Runner": {"layer": "Multi-Agent Orchestration Runtimes", "level": 6, "role": "Process Manager"}, + "Production Multi-Agent": {"layer": "Multi-Agent Orchestration Runtimes", "level": 6, "role": "Production Multi-Agent"}, + "Programmable IaC": {"layer": "Human Interface & System Operations", "level": 10, "role": "Programmable IaC"}, + "Project Management": {"layer": "Human Interface & System Operations", "level": 10, "role": "Project Management"}, + "Prompt Tester": {"layer": "Agentic Software Engineering & Sandboxes", "level": 7, "role": "Prompt Tester"}, + "Prompt Tooling": {"layer": "Agentic Software Engineering & Sandboxes", "level": 7, "role": "Prompt Management"}, + "Provisioning": {"layer": "Human Interface & System Operations", "level": 10, "role": "Provisioning"}, + "Proxy": {"layer": "Intelligent API Routers & Proxies", "level": 5, "role": "API Gateway"}, + "RAG Flow Canvas": {"layer": "Human Interface & System Operations", "level": 10, "role": "RAG Flow Canvas"}, + "Reasoning Engine": {"layer": "Multi-Agent Orchestration Runtimes", "level": 6, "role": "Reasoning Engine"}, + "Reference Manager": {"layer": "Human Interface & System Operations", "level": 10, "role": "Reference Manager"}, + "Requirement Builder": {"layer": "Agentic Software Engineering & Sandboxes", "level": 7, "role": "Requirement Builder"}, + "Role-Playing Agent": {"layer": "Multi-Agent Orchestration Runtimes", "level": 6, "role": "Role-Playing Agent"}, + "Runtime": {"layer": "Development Runtime & Environment", "level": 2, "role": "Runtime"}, + "Runtime Environment": {"layer": "Development Runtime & Environment", "level": 2, "role": "Runtime Environment"}, + "Runtime Packaging": {"layer": "Host Platform & Infrastructure", "level": 1, "role": "Runtime Packaging"}, + "Sandbox": {"layer": "Host Platform & Infrastructure", "level": 1, "role": "Isolation"}, + "Search Engine": {"layer": "Decentralized Knowledge & Vector Stores", "level": 8, "role": "Memory"}, + "Search Tool": {"layer": "Development Runtime & Environment", "level": 2, "role": "Search"}, + "Secrets Management": {"layer": "Host Platform & Infrastructure", "level": 1, "role": "Secrets Management"}, + "Serverless Database": {"layer": "Decentralized Knowledge & Vector Stores", "level": 8, "role": "Serverless Database"}, + "Serverless Framework": {"layer": "Development Runtime & Environment", "level": 2, "role": "Full-Stack Framework"}, + "Shell": {"layer": "Development Runtime & Environment", "level": 2, "role": "Shell"}, + "Single-File LLM": {"layer": "Local Inference Engines", "level": 4, "role": "Engine"}, + "Single-File Runtime": {"layer": "Local Inference Engines", "level": 4, "role": "Single-File Runtime"}, + "Skill Analysis": {"layer": "Agentic Software Engineering & Sandboxes", "level": 7, "role": "Assessment"}, + "Skill Auditor": {"layer": "Agentic Software Engineering & Sandboxes", "level": 7, "role": "Skill Auditor"}, + "Skill Inspection": {"layer": "Agentic Software Engineering & Sandboxes", "level": 7, "role": "Analysis"}, + "Sovereign Graph Editor": {"layer": "Human Interface & System Operations", "level": 10, "role": "Sovereign Graph Editor"}, + "Sovereign Software Agent": {"layer": "Agentic Software Engineering & Sandboxes", "level": 7, "role": "Sovereign Software Agent"}, + "Spaced Repetition": {"layer": "Human Interface & System Operations", "level": 10, "role": "Memory"}, + "Spec Writer": {"layer": "Agentic Software Engineering & Sandboxes", "level": 7, "role": "Documentation"}, + "Speech Recognition": {"layer": "Data Extraction & Pipeline Harvest", "level": 9, "role": "Senses"}, + "Speech Transcriber": {"layer": "Data Extraction & Pipeline Harvest", "level": 9, "role": "Speech Transcriber"}, + "Sprint Planner": {"layer": "Human Interface & System Operations", "level": 10, "role": "Sprint Planner"}, + "Sprints Manager": {"layer": "Human Interface & System Operations", "level": 10, "role": "Sprints Manager"}, + "Stateless Orchestration": {"layer": "Multi-Agent Orchestration Runtimes", "level": 6, "role": "Stateless Orchestration"}, + "Structured Synthesis": {"layer": "Decentralized Knowledge & Vector Stores", "level": 8, "role": "Structured Synthesis"}, + "Studio Canvas": {"layer": "Human Interface & System Operations", "level": 10, "role": "Studio Canvas"}, + "Synchronization Layer": {"layer": "Data Extraction & Pipeline Harvest", "level": 9, "role": "Synchronization Layer"}, + "System Auditor": {"layer": "Human Interface & System Operations", "level": 10, "role": "System Auditor"}, + "System Console": {"layer": "Human Interface & System Operations", "level": 10, "role": "System Console"}, + "Task Runner": {"layer": "Human Interface & System Operations", "level": 10, "role": "Scheduler"}, + "Telemetry": {"layer": "Human Interface & System Operations", "level": 10, "role": "Collector"}, + "Telemetry Monitor": {"layer": "Human Interface & System Operations", "level": 10, "role": "Telemetry Monitor"}, + "Telemetry Visualizer": {"layer": "Human Interface & System Operations", "level": 10, "role": "Telemetry Visualizer"}, + "Terminal": {"layer": "Host Platform & Infrastructure", "level": 1, "role": "Terminal"}, + "Terminal Agent": {"layer": "Multi-Agent Orchestration Runtimes", "level": 6, "role": "Terminal Agent"}, + "Terminal Coding Agent": {"layer": "Agentic Software Engineering & Sandboxes", "level": 7, "role": "Terminal Coding Agent"}, + "Text Search": {"layer": "Development Runtime & Environment", "level": 2, "role": "Text Search"}, + "Text-to-Speech": {"layer": "Data Extraction & Pipeline Harvest", "level": 9, "role": "Voice"}, + "Uncensored Models": {"layer": "Local Inference Engines", "level": 4, "role": "Engine"}, + "Unified API Gateway": {"layer": "Intelligent API Routers & Proxies", "level": 5, "role": "Unified API Gateway"}, + "VCS": {"layer": "Development Runtime & Environment", "level": 2, "role": "VCS"}, + "Vector Engine": {"layer": "Decentralized Knowledge & Vector Stores", "level": 8, "role": "Vector Engine"}, + "Vector Store": {"layer": "Decentralized Knowledge & Vector Stores", "level": 8, "role": "Memory"}, + "Virtualization": {"layer": "Host Platform & Infrastructure", "level": 1, "role": "Virtualization"}, + "Vision describer": {"layer": "Data Extraction & Pipeline Harvest", "level": 9, "role": "Vision describer"}, + "Visual Agent Canvas": {"layer": "Human Interface & System Operations", "level": 10, "role": "Visual Agent Canvas"}, + "Visualization": {"layer": "Human Interface & System Operations", "level": 10, "role": "Dashboard"}, + "Voice Synthesis": {"layer": "Data Extraction & Pipeline Harvest", "level": 9, "role": "Voice Synthesis"}, + "Web Crawler": {"layer": "Data Extraction & Pipeline Harvest", "level": 9, "role": "Data Harvesting"}, + "Web Scraper": {"layer": "Data Extraction & Pipeline Harvest", "level": 9, "role": "Web Scraper"}, + "Workflow": {"layer": "Human Interface & System Operations", "level": 10, "role": "Visual Builder"}, + "Workflow Automation": {"layer": "Multi-Agent Orchestration Runtimes", "level": 6, "role": "Workflow Automation"}, +} diff --git a/whatremains.txt b/whatremains.txt index 613933d..b825b8f 100755 --- a/whatremains.txt +++ b/whatremains.txt @@ -1,10 +1,14 @@ # AI-LSC Master Critique — What Remains ## Items intentionally skipped or deferred from this pass -**Date**: 2026-07-07 +**Date**: 2026-07-07 (critique pass) / updated 2026-08-30 (v3.2 taxonomy migration) **Pass scope**: CRITICAL (C-01, C-02, C-03, C-04, C-06, C-07) + all 24 HIGH + all 42 MEDIUM + all 20 LOW **Pass status**: 91 of 93 findings addressed in code; 2 explicitly skipped per user instruction **Double-check pass**: 19/19 functional spot-checks pass; 2 latent bugs found and fixed (see "Bugs caught during double-check" below) +**v3.2 note**: the 10-layer taxonomy migration preserved every curl|sh +site below verbatim — the restored installer cmds (ollama, llamafile, +qdrant, grafana_alloy, meilisearch, fabric) are byte-identical to the +pre-migration registry, so the C-05 policy state is unchanged. ---