Skip to main content

The fabric node — the federation's headless cohabitation runtime (registry + lens [+ node] over one shared substrate), as the abi3 wheel CIRISAgent consumes. agent = fabric node + brain.

Project description

CIRISServer — the fabric node

The decentralized CEWP node/client. agent = fabric node + brain. CIRISServer is the federation's headless cohabitation runtime: the same composition of cores that folds into a CIRISAgent, packaged without a reasoning brain. Infrastructure must not have agency — so the fabric node attests, stores, observes, reaches consensus, and transports, but it does not reason, decide, or act.

It is the node software for CEWP — the decentralized network formed by CEG, the CIRIS Epistemic Grammar. Any operator can run one; no single instance is load-bearing.

Read MISSION.md first — the charter (why this exists, the separation-of-powers invariant, the apophatic bounds), written against the CIRIS Accord (M-1), the CEG §7.0.1 fabric-node discipline, and Mission Driven Development. The build plan + dependency GANTT live in FSD/SERVER_1.0_PLAN.md.

What it is

A thin composition crate — shipped as both the headless ciris-server binary and a PyO3 abi3 wheel that CIRISAgent (pure Python) links instead of composing the cores itself — linking the federation's cores as libraries over one shared substrate:

ciris-server (the fabric node)
  ├── ciris-registry-core   authority    — identity / license / revocation / steward attestation
  ├── ciris-lens-core       observation  — Coherence Ratchet / Capacity Score (validated, not adjudicated)
  ├── ciris-node-core       consensus    — deferral / voting / expertise / moderation        [folds in at 1.0]
  ├── one shared ciris-persist Engine    — the durable corpus + federation directory
  └── one shared ciris-edge runtime      — CEG/RET transport + the node's single federation identity

It authors no primitives; CEG and the cores own the grammar. CIRISServer is the wiring, the boot order, one unified identity endpoint (/v1/identity, the six-key LocalIdentityAggregate) — and the control surface below.

A node and a client — the UX handles

CIRISServer renders no UI of its own. It is also the client control surface: it exposes every fabric control handle upward, and rich UIs consume them. The handles (MISSION §3.4):

  • Substrate handles — the node's federation identity (/v1/identity), federation-directory reads, content fetch, replication / health.
  • Fabric handlesfederation-identity minting (a hardware-rooted, YubiKey- or TPM/SE-sealed user identity → a CIRIS-V2- fedcode), node ownership (claim a node with its NodeCode + one-time PIN; the responsible owner-binding is infra:*, never agency), the per-role × per-axis trust/consent toggles, trust-graph management (untrust, re-root, create/join groups), canonical-group membership + voting, self/family occurrence attachment, and consent-object setup between peers (consent:replication).

Those handles are consumed by rich clients. Just like CIRISAgent, CIRISServer can run fully headless (the ciris-server binary + a CLI: e.g. ciris-server identity create --backend pkcs11 mints a YubiKey-backed federation ID) and it exposes a rich clientthe same CIRISAgent Kotlin-Multiplatform app, minus the agent (brain) cards. The app is a node: it runs a local fabric node and drives it (all crypto stays in the substrate, never in the UI). It surfaces the fabric cards — create-your-federation-ID (mint the hardware-rooted ID from the desktop app), claim-a-node (NodeCode + PIN), the consent-objects card, the node switcher, and the holonomic scoreboard — without the reasoning/chat cards an agent adds. (Other rich clients: CIRISPortal, CIRISNode.) The infrastructure that holds the audit corpus is the surface that publishes it (redacted PDMA logs / WBD tickets / attestation reads, per the Accord's transparency requirement).

What it replaces

The three canonical nodes (lens + registry-us + registry-eu) become identical fabric nodes — the founding members of the ciris-canonical governed community, replicating via CEG over Reticulum (no Spock, no DNS).

  • The CIRISRegistry singleton servers go away. Each node handles its own key the way the lens already does (per-node identity, no shared vault key); the three per-node keys are the 2-of-3 registry-consensus quorum.
  • The CIRISLens deployment goes away — Python ingest + TimescaleDB + Grafana retired. A central dashboard the whole federation reads is itself the singleton this architecture forbids. The lens function lives as ciris-lens-core inside every fabric node, over the shared substrate, queryable from any node.

The repos (ciris-registry-core, ciris-lens-core, ciris-node-core) stay — they are the libraries this binary composes, the same cores that fold into CIRISAgent.

Install

pip install ciris-server      # the PyO3 abi3 wheel (or build the binary: cargo build --release)
ciris-server                  # boots a zero-setup node — mode=server, trusts ciris-canonical, no wizard
                              # on a fresh (unclaimed) node it prints its NodeCode + one-time claim PIN

# Headless: mint a hardware-rooted federation ID (or do it from the desktop app)
ciris-server identity create --backend pkcs11   # YubiKey-backed; --backend platform-sealed (TPM/SE) | software (dev)
                                                # prints your CIRIS-V2- fedcode + key_id

Defaults need no setup: data under $CIRIS_HOME, SQLite corpus (Postgres via CIRIS_DB_URL), identity minted-or-migrated on first boot, Reticulum transport up, the lens read API on listen+1. Migrating a deployed CIRISLens host? See FSD/LENS_TO_SERVER_MIGRATION.md — the federation key and RNS address carry over byte-identically (no re-key).

The same wheel gives CIRISAgent the lens drop-in: from ciris_server import LensClient.

Status

Shipped (0.3.0) — the integrated fabric node. ciris-server boots a zero-setup node: relay ingest (CEG AccordEventsBatch over Reticulum/HTTP) + the seven frozen GET /lens/api/v1/* read endpoints + the six-key GET /v1/identity, over one shared persist Engine. Federation signatures are 100% hybrid post-quantum (Ed25519 + ML-DSA-65, hard cut — no classical-only path); the sealed-Ed25519 federation seed and the RNS transport identity are TPM/SE/StrongBox sealed (software-encrypted fallback) and adopted byte-identically on a CIRISLens takeover (no re-key).

0.3.0 adds the auth subsystem (src/auth/, CIRISServer#9) — the fabric is the single auth authority: one x-ciris-* hybrid request verifier, self-at-login (so consent/erasure are user-signed), OAuth + sessions + roles/perms + api-keys + user-signed consent + CEG-native erasure (GDPR Art. 17), all a byte-compatible port of the agent's wa_cert-backed auth — and the one-wheel re-export (CIRISServer#4) so CIRISAgent consumes a single ciris_server .so (one PyO3 registry). Also shipped: legacy-trace import (ciris-server import-traces), the holonomic federation scoreboard (ciris-server scoreboard) + the interpreted capability page at https://cirisai.github.io/CIRISServer/, and the §19.7 noise-floor compliance bench. Below the lens-store disk minimum the node degrades to a Reticulum relay node.

Substrate floor: persist v13.3.0 / edge v9.1.3 / verify-family v8.9.0 (the 0.5.84 safe-mesh-seed cut; see Cargo.toml). ciris-lens-core is absorbed in-tree — the standalone CIRISLensCore library and the CIRISLens deployment (Grafana/TimescaleDB/Python ingest) retire. Cohabitation + CEG-profile conformance is gated by CIRISConformance against the published wheels.

Roadmap (driven by the CIRISAgent train):

  • 0.5 (config-as-CEG — zero env vars) — all node config is signed CEG objects (owner-authored, runtime-reconciled, replicated); the fabric IS the config, the same way the agent IS its graph.
  • 0.6 (+ registry authority) — agent ~2.9.8/9. Prep: FSD/REGISTRY_FOLD_DERISK.md, #2.
  • 1.0 (+ node consensus — the complete fabric node) — agent ~2.9.10.

The wiring needs no core changes — CIRISServer adapts to what's shipped. See FSD/SERVER_1.0_PLAN.md.

License

AGPL-3.0-or-later — matching the CIRIS ecosystem.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ciris_server-0.5.123.tar.gz (1.4 MB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

ciris_server-0.5.123-cp310-abi3-win_amd64.whl (95.6 MB view details)

Uploaded CPython 3.10+Windows x86-64

ciris_server-0.5.123-cp310-abi3-manylinux_2_39_x86_64.whl (94.6 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.39+ x86-64

ciris_server-0.5.123-cp310-abi3-manylinux_2_39_aarch64.whl (90.7 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.39+ ARM64

ciris_server-0.5.123-cp310-abi3-macosx_11_0_arm64.whl (96.3 MB view details)

Uploaded CPython 3.10+macOS 11.0+ ARM64

ciris_server-0.5.123-cp310-abi3-macosx_10_12_x86_64.whl (97.9 MB view details)

Uploaded CPython 3.10+macOS 10.12+ x86-64

ciris_server-0.5.123-cp310-abi3-android_24_x86_64.whl (31.6 MB view details)

Uploaded Android API level 24+ x86-64CPython 3.10+

ciris_server-0.5.123-cp310-abi3-android_24_armeabi_v7a.whl (27.0 MB view details)

Uploaded Android API level 24+ ARM EABI v7aCPython 3.10+

ciris_server-0.5.123-cp310-abi3-android_24_arm64_v8a.whl (29.5 MB view details)

Uploaded Android API level 24+ ARM64 v8aCPython 3.10+

File details

Details for the file ciris_server-0.5.123.tar.gz.

File metadata

  • Download URL: ciris_server-0.5.123.tar.gz
  • Upload date:
  • Size: 1.4 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for ciris_server-0.5.123.tar.gz
Algorithm Hash digest
SHA256 e701fdfd0e07ac163d70be858084c169ff798dd79ddc343af5f3d904d424706e
MD5 6da7c50bfa83f65fed9d6fd8a2489cba
BLAKE2b-256 052c20d7c246b8314e95f39cf25c69d397c657ffdede4fb0b4a1dbb753a04526

See more details on using hashes here.

Provenance

The following attestation bundles were made for ciris_server-0.5.123.tar.gz:

Publisher: publish-pypi.yml on CIRISAI/CIRISServer

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ciris_server-0.5.123-cp310-abi3-win_amd64.whl.

File metadata

File hashes

Hashes for ciris_server-0.5.123-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 efe3e2110fcdc8b45f4eb073a49f6956088c3e85631efbd0ef0819bb5a292965
MD5 0cf74d3be84d5d894b364c5dce8f3b60
BLAKE2b-256 a5163148c171d40307fffdf328172c2e65719d5e8a4b515af280a5a266e7d475

See more details on using hashes here.

Provenance

The following attestation bundles were made for ciris_server-0.5.123-cp310-abi3-win_amd64.whl:

Publisher: publish-pypi.yml on CIRISAI/CIRISServer

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ciris_server-0.5.123-cp310-abi3-manylinux_2_39_x86_64.whl.

File metadata

File hashes

Hashes for ciris_server-0.5.123-cp310-abi3-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 c08fe737ed32926dccdc6cfbe4b338e1a2957ef7822234577850b5e788885baf
MD5 f73a87ea0b05f210dbe94d24d0528bf2
BLAKE2b-256 7530d228ef496fe92963bdb5dd37f4124c59455f2128f74068161d61c4e0e977

See more details on using hashes here.

Provenance

The following attestation bundles were made for ciris_server-0.5.123-cp310-abi3-manylinux_2_39_x86_64.whl:

Publisher: publish-pypi.yml on CIRISAI/CIRISServer

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ciris_server-0.5.123-cp310-abi3-manylinux_2_39_aarch64.whl.

File metadata

File hashes

Hashes for ciris_server-0.5.123-cp310-abi3-manylinux_2_39_aarch64.whl
Algorithm Hash digest
SHA256 4d73e5ca211b3b7bd4fbd5dc268f405d4c55e75b638604feaedb44ad3f7e9ae0
MD5 2836a896d2761e9f3b0b8724905a5fd8
BLAKE2b-256 1b7d1e8d840ac00ec21bdbea5f3db31d861334dc6314b96b276734ffef707091

See more details on using hashes here.

Provenance

The following attestation bundles were made for ciris_server-0.5.123-cp310-abi3-manylinux_2_39_aarch64.whl:

Publisher: publish-pypi.yml on CIRISAI/CIRISServer

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ciris_server-0.5.123-cp310-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for ciris_server-0.5.123-cp310-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ece908de6e27b17e8924a8cc21d3f9f882075ca31226236c07de87b0c5323cd2
MD5 9452a3cc53bbe72d3432dcd8690bb137
BLAKE2b-256 fc197e1f34e253d0e0fd97a73b13337e6d224b911b26f53b02f887a00f897c1e

See more details on using hashes here.

Provenance

The following attestation bundles were made for ciris_server-0.5.123-cp310-abi3-macosx_11_0_arm64.whl:

Publisher: publish-pypi.yml on CIRISAI/CIRISServer

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ciris_server-0.5.123-cp310-abi3-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for ciris_server-0.5.123-cp310-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 8371efae2a98aa4c6bbefd0ed8ecce7ee26e2a09c79da1e713c1f83880398101
MD5 9c3897da363fd1c165fa83fecb342c6b
BLAKE2b-256 764d9ba57bd328d033dda6329b6b0a5d0570f003083265020a8f622ec667403c

See more details on using hashes here.

Provenance

The following attestation bundles were made for ciris_server-0.5.123-cp310-abi3-macosx_10_12_x86_64.whl:

Publisher: publish-pypi.yml on CIRISAI/CIRISServer

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ciris_server-0.5.123-cp310-abi3-android_24_x86_64.whl.

File metadata

File hashes

Hashes for ciris_server-0.5.123-cp310-abi3-android_24_x86_64.whl
Algorithm Hash digest
SHA256 2331aa3b585c88568bbeda78a65d466442c25cf0675b8a510fc67c4df39b2eed
MD5 f0aaecda5b2034ab886df78e4b40a50f
BLAKE2b-256 fbd53120dc3c10a6ca2f1a32cfaff314b0e6fb90948252cb27c62fbf4df14ca3

See more details on using hashes here.

Provenance

The following attestation bundles were made for ciris_server-0.5.123-cp310-abi3-android_24_x86_64.whl:

Publisher: publish-pypi.yml on CIRISAI/CIRISServer

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ciris_server-0.5.123-cp310-abi3-android_24_armeabi_v7a.whl.

File metadata

File hashes

Hashes for ciris_server-0.5.123-cp310-abi3-android_24_armeabi_v7a.whl
Algorithm Hash digest
SHA256 af917fe49a40ec6bcc5c76817211336ba02d57764816d22942f12d40694c21fb
MD5 26ae22201c2d8ea74f99b1eb36068057
BLAKE2b-256 a4a0b22da1b058c02f9ddca098c4d87ad6ae7a7b4be2524ce86e2ce16eb73734

See more details on using hashes here.

Provenance

The following attestation bundles were made for ciris_server-0.5.123-cp310-abi3-android_24_armeabi_v7a.whl:

Publisher: publish-pypi.yml on CIRISAI/CIRISServer

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ciris_server-0.5.123-cp310-abi3-android_24_arm64_v8a.whl.

File metadata

File hashes

Hashes for ciris_server-0.5.123-cp310-abi3-android_24_arm64_v8a.whl
Algorithm Hash digest
SHA256 be1dff7867da05716dc8d7415d3317bc7c234790ac5553cf8387047322edae40
MD5 7d3c6e511cf22ee7b637c2cc094d5f4e
BLAKE2b-256 97e4b59a56423deaa8b5b42f6ae7969cb1010a384403b82ee2ec1a90af48a415

See more details on using hashes here.

Provenance

The following attestation bundles were made for ciris_server-0.5.123-cp310-abi3-android_24_arm64_v8a.whl:

Publisher: publish-pypi.yml on CIRISAI/CIRISServer

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page