diff --git a/EXPLAINME.adoc b/EXPLAINME.adoc index ba542778..5ae0815d 100644 --- a/EXPLAINME.adoc +++ b/EXPLAINME.adoc @@ -18,7 +18,7 @@ This is the Model-Controller-Processor pattern: cartridges are pluggable service **Location**: `elixir/lib/boj_rest/catalog.ex` (Elixir GenServer cartridge discovery and initialization) -**How verified**: `BojRest.Catalog` scans `cartridges/*/cartridge.json` at startup, reads tool schemas from each, and stores them in an ETS table. It validates `name`, `version`, `tools` required fields and prevents duplicate names. 112 cartridges are auto-discovered. This enables the "unified endpoint" claim: a single REST server exposes the union of all cartridges' tools without hardcoding each one. +**How verified**: `BojRest.Catalog` scans `cartridges/*/cartridge.json` at startup, reads tool schemas from each, and stores them in an ETS table. It validates `name`, `version`, `tools` required fields and prevents duplicate names. 115 cartridges are auto-discovered. This enables the "unified endpoint" claim: a single REST server exposes the union of all cartridges' tools without hardcoding each one. **Caveat**: Auto-discovery is runtime dynamic; there is no compile-time verification that all cartridge schemas are valid JSON Schema. A malformed `cartridge.json` is silently skipped at startup. The authoritative manifest format is Nickel (closed decision `boj-cartridge-manifest-format-dd.md`); migration from JSON is future work. @@ -41,7 +41,7 @@ This is the Model-Controller-Processor pattern: cartridges are pluggable service | gossamer, burble, ephapax, hypatia, verisimdb, typed-wasm — universal ABI/FFI pattern across the estate | *Pluggable cartridge architecture* -| 112 cartridge directories (`cartridges/*/`), each with `abi/`, `ffi/`, `mod.js` structure; auto-discovered at startup via manifest scan +| 115 cartridge directories (`cartridges/*/`), each with `abi/`, `ffi/`, `mod.js` structure; auto-discovered at startup via manifest scan | echidna (prover orchestration as cartridges), hypatia (rule composition), gitbot-fleet (bot cartridges per service) | *PanLL ReScript workspace layer* @@ -49,7 +49,7 @@ This is the Model-Controller-Processor pattern: cartridges are pluggable service | idaptik (game UI panels), gossamer-powered SPAs, PanLL monorepo panels estate-wide | *panic-attack security gate* -| Pre-commit `panic-attack assail` enforces PA001-PA025 across all 112 cartridges; security module tests cover injection, unicode bypass, SSRF +| Pre-commit `panic-attack assail` enforces PA001-PA025 across all 115 cartridges; security module tests cover injection, unicode bypass, SSRF | Every RSR repo in the estate; panicbot wraps it in CI | *Elixir/BEAM + Deno runtime* @@ -69,7 +69,7 @@ This is the Model-Controller-Processor pattern: cartridges are pluggable service | `elixir/lib/boj_rest/js_worker.ex` | GenServer wrapping a single Deno port; newline-delimited JSON protocol | `elixir/lib/boj_rest/node_key.ex` | X25519 keypair persistence; ChaCha20-Poly1305 credential decryption | `elixir/priv/js_pool_worker.js` | Deno-side pool worker; module cache, env isolation per request -| `cartridges/*/` | 112 cartridge directories, each with abi/, ffi/, mod.js structure +| `cartridges/*/` | 115 cartridge directories, each with abi/, ffi/, mod.js structure | `src/abi/Boj/` | Idris2 ABI definitions (Protocol, Domain, Catalogue, Safety, etc.) | `panll/` | ReScript/TEA panel framework for UI workspace layer |=== diff --git a/Justfile b/Justfile index 69701b17..3f84ec48 100644 --- a/Justfile +++ b/Justfile @@ -19,7 +19,7 @@ import? "contractile.just" # Project metadata — customize these project := "Bundle of Joy Server" -version := "0.3.1" +version := "0.4.6" tier := "infrastructure" # 1 | 2 | infrastructure # ═══════════════════════════════════════════════════════════════════════════════ diff --git a/QUICKSTART-USER.adoc b/QUICKSTART-USER.adoc index 4c3b2d61..9e68bcfb 100644 --- a/QUICKSTART-USER.adoc +++ b/QUICKSTART-USER.adoc @@ -10,7 +10,7 @@ toc::[] == What is BoJ Server? -Bundle of Joy (BoJ) Server is a cartridge-based MCP protocol gateway. Each cartridge (database-mcp, fleet-mcp, nesy-mcp, etc.) is a formally verified Idris2 ABI + Zig FFI + Deno/JS adapter triple. The server exposes REST (port 7700) via Elixir/BEAM with Zig FFI for `.so` cartridges and a persistent Deno worker pool for JS cartridges. 112 cartridges cover databases, clouds, messaging, CI/CD, git forges, secrets, queues, proofs, and more. +Bundle of Joy (BoJ) Server is a cartridge-based MCP protocol gateway. Each cartridge (database-mcp, fleet-mcp, nesy-mcp, etc.) is a formally verified Idris2 ABI + Zig FFI + Deno/JS adapter triple. The server exposes REST (port 7700) via Elixir/BEAM with Zig FFI for `.so` cartridges and a persistent Deno worker pool for JS cartridges. 115 cartridges cover databases, clouds, messaging, CI/CD, git forges, secrets, queues, proofs, and more. Three-class architecture: Class 1 (simple CLI), Class 2 (orchestrator with webhooks/MQTT), Class 3 (BEAM multiplier for global scale). @@ -76,7 +76,7 @@ Start the Elixir/BEAM server: just run ---- -This starts the BEAM application, auto-discovers all 112 cartridges, and launches the Deno worker pool for JS dispatch: +This starts the BEAM application, auto-discovers all 115 cartridges, and launches the Deno worker pool for JS dispatch: - REST API on http://localhost:7700 @@ -142,17 +142,24 @@ Starts the server + Cloudflare Quick Tunnel (requires `cloudflared`). | 7700 | REST (HTTP) -| Primary API, status endpoint +| Primary API, status endpoint — implemented in `elixir/lib/boj_rest/router.ex` | 7701 | gRPC -| Binary protocol +| Planned (binary protocol). The `Boj.Protocol` ABI enum lists `GRPC` but no `.proto` files exist and no gRPC server is wired into the BEAM application yet. | 7702 | GraphQL -| Query interface +| Planned (query interface). Not present in the `Boj.Protocol` ABI enum and no schema or Absinthe server is wired into the BEAM application yet. |=== +[NOTE] +==== +Only the REST surface on port 7700 is currently implemented. The gRPC and +GraphQL rows above are forward-looking; until they ship, only `7700` will +actually accept connections. +==== + == Guided Tour [source,bash] diff --git a/README.adoc b/README.adoc index f552d7a8..659dc444 100644 --- a/README.adoc +++ b/README.adoc @@ -10,7 +10,7 @@ image:https://img.shields.io/badge/License-PMPL--1.0-blue.svg[License: PMPL-1.0, image:https://glama.ai/mcp/servers/hyperpolymath/boj-server/badge[Glama MCP Server,link=https://glama.ai/mcp/servers/hyperpolymath/boj-server] image:https://api.thegreenwebfoundation.org/greencheckimage/boj-server.net[Green Hosting,link="https://www.thegreenwebfoundation.org/green-web-check/?url=boj-server.net"] -BoJ (Bundle of Joy) is a unified MCP server that consolidates all hyperpolymath tooling into a single endpoint — GitHub, GitLab, Cloudflare, Vercel, Verpex, Gmail, Calendar, browser automation, research, ML, and 106+ open-source cartridges. +BoJ (Bundle of Joy) is a unified MCP server that consolidates all hyperpolymath tooling into a single endpoint — GitHub, GitLab, Cloudflare, Vercel, Verpex, Gmail, Calendar, browser automation, research, ML, and 115 open-source cartridges. == Install @@ -43,7 +43,7 @@ Glama listing: https://glama.ai/mcp/servers/hyperpolymath/boj-server * *Research* — Semantic Scholar papers, citations, authors * *ML* — Hugging Face model / dataset / inference * *Local coordination* — `local-coord-mcp` (24 tools): multi-instance AI peer discovery, typed envelopes, claim/heartbeat/watchdog, quarantine + master/journeyman/apprentice supervision, track-record affinity, capability advertisement -* *Cartridges* — 100 pluggable cartridges across Teranga / Shield / Ayo trust tiers +* *Cartridges* — 115 pluggable cartridges across Teranga / Shield / Ayo trust tiers == Local-coord-mcp at a glance diff --git a/README.md b/README.md index f6eac2a1..c7921ae2 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ [![Glama MCP Server](https://glama.ai/mcp/servers/hyperpolymath/boj-server/badge)](https://glama.ai/mcp/servers/hyperpolymath/boj-server) [![Green Hosting](https://api.thegreenwebfoundation.org/greencheckimage/boj-server.net)](https://www.thegreenwebfoundation.org/green-web-check/?url=boj-server.net) -BoJ (Bundle of Joy) is a unified MCP server that consolidates all hyperpolymath tooling into a single endpoint — GitHub, GitLab, Cloudflare, Vercel, Verpex, Gmail, Calendar, browser automation, research, ML, and 50+ open-source cartridges. +BoJ (Bundle of Joy) is a unified MCP server that consolidates all hyperpolymath tooling into a single endpoint — GitHub, GitLab, Cloudflare, Vercel, Verpex, Gmail, Calendar, browser automation, research, ML, and 115 open-source cartridges. ## Install @@ -35,7 +35,7 @@ Glama listing: - **Research** — Semantic Scholar papers, citations, authors - **ML** — Hugging Face model / dataset / inference - **Local coordination** — `local-coord-mcp` (24 tools): multi-instance AI peer discovery, typed envelopes, claim/heartbeat/watchdog, quarantine + master/journeyman/apprentice supervision, track-record affinity, capability advertisement -- **Cartridges** — 100 pluggable cartridges across Teranga / Shield / Ayo trust tiers +- **Cartridges** — 115 pluggable cartridges across Teranga / Shield / Ayo trust tiers ## Local-coord-mcp at a glance diff --git a/ai-plugin.json b/ai-plugin.json index 52470cfc..a8ec866d 100644 --- a/ai-plugin.json +++ b/ai-plugin.json @@ -2,8 +2,8 @@ "schema_version": "v1", "name_for_human": "Bundle of Joy Server", "name_for_model": "boj_server", - "description_for_human": "Cartridge-based DevOps toolkit with 55 formally verified domain cartridges spanning database, cloud, git, Kubernetes, containers, observability, secrets, IaC, ML, browser automation, communications, and research.", - "description_for_model": "A cartridge-based MCP server exposing 55 DevOps domain cartridges via a unified REST API. Each cartridge has a formally verified Idris2 ABI, Zig FFI bridge, and V-lang adapter. Domains include: database (VeriSimDB, PostgreSQL, Redis, DuckDB, MongoDB, Neo4j, ClickHouse, Turso, Supabase, Neon, ArangoDB), cloud providers (AWS, GCP, Cloudflare, Vercel, Verpex, DigitalOcean, Hetzner, Fly.io, Railway, Render, Linode), git forges (GitHub, GitLab), Kubernetes, containers, observability, secrets/vault, IaC, ML/AI (HuggingFace), browser automation (Firefox), communications (Gmail, Calendar), queues, SSG, research (academic papers), and language tooling. Use boj_menu to discover available cartridges, boj_cartridge_info to inspect a cartridge, and boj_cartridge_invoke to call operations.", + "description_for_human": "Cartridge-based DevOps toolkit with 115 formally verified domain cartridges spanning database, cloud, git, Kubernetes, containers, observability, secrets, IaC, ML, browser automation, communications, and research.", + "description_for_model": "A cartridge-based MCP server exposing 115 DevOps domain cartridges via a unified REST API. Each cartridge has a formally verified Idris2 ABI, Zig FFI bridge, and Deno/JS adapter. Domains include: database (VeriSimDB, PostgreSQL, Redis, DuckDB, MongoDB, Neo4j, ClickHouse, Turso, Supabase, Neon, ArangoDB), cloud providers (AWS, GCP, Cloudflare, Vercel, Verpex, DigitalOcean, Hetzner, Fly.io, Railway, Render, Linode), git forges (GitHub, GitLab), Kubernetes, containers, observability, secrets/vault, IaC, ML/AI (HuggingFace), browser automation (Firefox), communications (Gmail, Calendar), queues, SSG, research (academic papers), and language tooling. Use boj_menu to discover available cartridges, boj_cartridge_info to inspect a cartridge, and boj_cartridge_invoke to call operations.", "auth": { "type": "none" }, diff --git a/docs/glama/CAPABILITIES.md b/docs/glama/CAPABILITIES.md index 828a95a3..98b5da5b 100644 --- a/docs/glama/CAPABILITIES.md +++ b/docs/glama/CAPABILITIES.md @@ -9,7 +9,7 @@ - **gRPC**: gRPC support for high-performance clients ### Cartridge System -- **106 Cartridges**: Covering databases, git, cloud, comms, ML, browser, and more +- **115 Cartridges**: Covering databases, git, cloud, comms, ML, browser, and more - **1041 Tools**: Specialized operations across all domains - **Hot-Reloading**: Add/remove cartridges without restarting - **Isolation**: Each cartridge runs in its own sandbox diff --git a/docs/glama/RESOURCES.md b/docs/glama/RESOURCES.md index 4159f221..1366602b 100644 --- a/docs/glama/RESOURCES.md +++ b/docs/glama/RESOURCES.md @@ -40,7 +40,7 @@ Factual statements about entities with temporal validity. { "id": "obs_456", "entity_id": "ent_123", - "content": "BoJ Server supports 106 cartridges", + "content": "BoJ Server supports 115 cartridges", "source": "documentation", "valid_from": "2026-01-01T00:00:00Z", "valid_to": null, diff --git a/docs/specification/openapi.yaml b/docs/specification/openapi.yaml index 0dce42e4..ab467995 100644 --- a/docs/specification/openapi.yaml +++ b/docs/specification/openapi.yaml @@ -11,7 +11,7 @@ openapi: 3.1.0 info: title: BoJ Server REST API - version: 0.3.0 + version: 0.4.6 summary: Formally verified cartridge server for cloud infrastructure, databases, git, containers, and more. description: | BoJ (Bundle of Joy) Server is a cartridge-based infrastructure management diff --git a/gemini-extension.json b/gemini-extension.json index ae141e2e..0d74f46d 100644 --- a/gemini-extension.json +++ b/gemini-extension.json @@ -1,6 +1,6 @@ { "name": "boj-server", - "version": "0.4.0", + "version": "0.4.6", "description": "Unified Gemini extension for the BoJ (Bundle of Joy) Server infrastructure.", "author": "Jonathan D.A. Jewell ", "mcpServers": { diff --git a/llm-warmup-dev.md b/llm-warmup-dev.md index 8d4bbc5a..ac99a678 100644 --- a/llm-warmup-dev.md +++ b/llm-warmup-dev.md @@ -63,7 +63,7 @@ elixir/ Elixir/BEAM REST server test/ 50 ExUnit tests (catalog, router, crypto, JS dispatch) config/ config.exs / test.exs -cartridges/ 112 cartridge directories +cartridges/ 115 cartridge directories database-mcp/ Example cartridge abi/database-mcp.ipkg Idris2 ABI abi/Database/Mcp.idr Idris2 source @@ -113,7 +113,7 @@ panll/src/ PanLL panel (ReScript/TEA) ```bash just build # Build all Zig FFI layers (catalogue + cartridges) just build-release # Optimized build (-Doptimize=ReleaseFast) -just run # Start Elixir/BEAM server (REST 7700, auto-discovers 112 cartridges) +just run # Start Elixir/BEAM server (REST 7700, auto-discovers 115 cartridges) just serve # Server + Cloudflare tunnel just test # Elixir ExUnit test suite (mix test) just test-smoke # Quick: typecheck core ABI + ExUnit smoke @@ -204,7 +204,7 @@ POST /cartridge/{name}/invoke: { "tool": "...", "args": {...}, "credential_envel ## Cartridge Matrix -112 cartridges organized in a 2D matrix (Protocol x Domain). +115 cartridges organized in a 2D matrix (Protocol x Domain). Each has: `abi/` (Idris2), `ffi/` (Zig), `mod.js` (Deno adapter). View status: `just matrix` diff --git a/llm-warmup-user.md b/llm-warmup-user.md index 084dee61..e349d6c2 100644 --- a/llm-warmup-user.md +++ b/llm-warmup-user.md @@ -58,7 +58,7 @@ and many more. | `ffi/zig/src/catalogue.zig` | Mount/unmount operations | | `ffi/zig/src/boj_invoke_main.zig` | boj-invoke CLI (dlopen dispatch) | | `elixir/lib/boj_rest/` | Elixir REST server (Catalog, Router, JsWorkerPool) | -| `cartridges/` | 112 cartridge directories | +| `cartridges/` | 115 cartridge directories | ## Invariants diff --git a/openapi.yaml b/openapi.yaml index 48fb1ea6..6176c5c8 100644 --- a/openapi.yaml +++ b/openapi.yaml @@ -9,11 +9,11 @@ openapi: "3.1.0" info: title: Bundle of Joy Server API description: | - Cartridge-based DevOps toolkit with 106 formally verified domain cartridges. + Cartridge-based DevOps toolkit with 115 formally verified domain cartridges. Each cartridge has an Idris2 ABI (dependent type proofs), Zig FFI bridge, and HTTP adapter. The REST API at port 7700 provides discovery, inspection, and invocation of all cartridges. - version: "0.4.0" + version: "0.4.6" contact: name: Jonathan D.A. Jewell email: j.d.a.jewell@open.ac.uk diff --git a/smithery.yaml b/smithery.yaml index 859303c5..5a5e138e 100644 --- a/smithery.yaml +++ b/smithery.yaml @@ -5,8 +5,8 @@ # https://smithery.ai name: boj-server -description: "Bundle of Joy — cartridge-based MCP server with 53 formally verified domain cartridges (database, cloud, git, k8s, containers, observability, secrets, IaC, and more)" -version: "0.4.0" +description: "Bundle of Joy — cartridge-based MCP server with 115 formally verified domain cartridges (database, cloud, git, k8s, containers, observability, secrets, IaC, and more)" +version: "0.4.6" author: "Jonathan D.A. Jewell" license: "PMPL-1.0-or-later" homepage: "https://github.com/hyperpolymath/boj-server" @@ -33,7 +33,7 @@ tools: - name: boj_health description: "Check BoJ server health status" - name: boj_menu - description: "List all 53 cartridges with domains, protocols, and tiers" + description: "List all 115 cartridges with domains, protocols, and tiers" - name: boj_cartridges description: "Show the cartridge matrix — protocol x domain grid" - name: boj_cartridge_info diff --git a/stapeln.toml b/stapeln.toml index 86cb7827..83f45e66 100644 --- a/stapeln.toml +++ b/stapeln.toml @@ -6,7 +6,7 @@ [metadata] name = "boj-server" -version = "0.3.1" +version = "0.4.6" description = "Bundle of Joy Server — unified MCP capability catalogue with formally verified Zig/Idris2 cartridges" author = "Jonathan D.A. Jewell " license = "PMPL-1.0-or-later"