|
| 1 | +# NestGate Capability Registry — Machine-Readable Self-Knowledge |
| 2 | +# SPDX-License-Identifier: AGPL-3.0-or-later |
| 3 | +# Copyright (c) 2025-2026 ecoPrimals Collective |
| 4 | +# |
| 5 | +# This file is the single source of truth for NestGate's primal identity |
| 6 | +# and advertised capabilities. Wire Standard L3 responses and cross-check |
| 7 | +# tests derive from these definitions. |
| 8 | + |
| 9 | +[primal] |
| 10 | +name = "nestgate" |
| 11 | +domain = "storage" |
| 12 | +version = "4.7.0-dev" |
| 13 | +license = "AGPL-3.0-or-later" |
| 14 | +description = "Sovereign storage & permanence primal — filesystem-backed durable key-value, blob, and ZFS orchestration" |
| 15 | +transport = ["uds", "http"] |
| 16 | +protocol = "jsonrpc-2.0" |
| 17 | + |
| 18 | +[capabilities.storage] |
| 19 | +domain = "storage" |
| 20 | +description = "Filesystem-backed durable key-value and blob storage" |
| 21 | +methods = [ |
| 22 | + "storage.store", "storage.retrieve", "storage.exists", |
| 23 | + "storage.delete", "storage.list", "storage.stats", |
| 24 | + "storage.store_blob", "storage.retrieve_blob", "storage.fetch_external", |
| 25 | +] |
| 26 | + |
| 27 | +[capabilities.model] |
| 28 | +domain = "model" |
| 29 | +description = "AI model cache — registration, lookup, metadata" |
| 30 | +methods = ["model.register", "model.exists", "model.locate", "model.metadata"] |
| 31 | + |
| 32 | +[capabilities.templates] |
| 33 | +domain = "templates" |
| 34 | +description = "Template persistence and community ranking" |
| 35 | +methods = ["templates.store", "templates.retrieve", "templates.list", "templates.community_top"] |
| 36 | + |
| 37 | +[capabilities.session] |
| 38 | +domain = "session" |
| 39 | +description = "Game session persistence (convenience over storage.*)" |
| 40 | +methods = ["session.save", "session.load"] |
| 41 | + |
| 42 | +[capabilities.audit] |
| 43 | +domain = "audit" |
| 44 | +description = "Execution audit trail persistence" |
| 45 | +methods = ["audit.store_execution"] |
| 46 | + |
| 47 | +[capabilities.nat] |
| 48 | +domain = "nat" |
| 49 | +description = "NAT traversal endpoint persistence" |
| 50 | +methods = ["nat.store_traversal_info", "nat.retrieve_traversal_info"] |
| 51 | + |
| 52 | +[capabilities.beacon] |
| 53 | +domain = "beacon" |
| 54 | +description = "Known beacon persistence for mesh discovery" |
| 55 | +methods = ["beacon.store", "beacon.retrieve", "beacon.list", "beacon.delete"] |
| 56 | + |
| 57 | +[capabilities.data] |
| 58 | +domain = "data" |
| 59 | +description = "External data feed proxying (NCBI, NOAA, IRIS)" |
| 60 | +methods = ["data.ncbi_search", "data.ncbi_fetch", "data.noaa_ghcnd", "data.iris_stations", "data.iris_events"] |
| 61 | + |
| 62 | +[capabilities.zfs] |
| 63 | +domain = "zfs" |
| 64 | +description = "ZFS storage management — pools, datasets, snapshots" |
| 65 | +methods = [ |
| 66 | + "zfs.pool.list", "zfs.pool.get", "zfs.pool.health", |
| 67 | + "zfs.dataset.list", "zfs.dataset.get", |
| 68 | + "zfs.snapshot.list", "zfs.health", |
| 69 | +] |
| 70 | + |
| 71 | +[capabilities.health] |
| 72 | +domain = "health" |
| 73 | +description = "Liveness, readiness, and health check endpoints" |
| 74 | +methods = ["health.liveness", "health.readiness", "health.check"] |
| 75 | + |
| 76 | +[capabilities.identity] |
| 77 | +domain = "identity" |
| 78 | +description = "Primal identity and self-knowledge" |
| 79 | +methods = ["identity.get"] |
| 80 | + |
| 81 | +[capabilities.discovery] |
| 82 | +domain = "discovery" |
| 83 | +description = "Capability advertisement and listing" |
| 84 | +methods = ["capabilities.list", "discover.capabilities"] |
| 85 | + |
| 86 | +# Consumed capabilities — what NestGate needs from other primals |
| 87 | +[consumed_capabilities.security] |
| 88 | +reason = "BTSP handshake crypto delegation" |
| 89 | +required = false |
| 90 | + |
| 91 | +[consumed_capabilities.discovery_mesh] |
| 92 | +reason = "Songbird-style service mesh registration and heartbeat" |
| 93 | +required = false |
| 94 | + |
| 95 | +[consumed_capabilities.crypto] |
| 96 | +reason = "Content-addressed hashing, signature verification (delegated via IPC)" |
| 97 | +required = false |
0 commit comments