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.118.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.118-cp310-abi3-win_amd64.whl (95.5 MB view details)

Uploaded CPython 3.10+Windows x86-64

ciris_server-0.5.118-cp310-abi3-manylinux_2_39_x86_64.whl (94.5 MB view details)

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

ciris_server-0.5.118-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.118-cp310-abi3-macosx_11_0_arm64.whl (96.2 MB view details)

Uploaded CPython 3.10+macOS 11.0+ ARM64

ciris_server-0.5.118-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.118-cp310-abi3-android_24_x86_64.whl (31.5 MB view details)

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

ciris_server-0.5.118-cp310-abi3-android_24_armeabi_v7a.whl (26.9 MB view details)

Uploaded Android API level 24+ ARM EABI v7aCPython 3.10+

ciris_server-0.5.118-cp310-abi3-android_24_arm64_v8a.whl (29.4 MB view details)

Uploaded Android API level 24+ ARM64 v8aCPython 3.10+

File details

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

File metadata

  • Download URL: ciris_server-0.5.118.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.118.tar.gz
Algorithm Hash digest
SHA256 dfa551789889a8d9c70d45c33f0c899e98ea035178da891e85f3d7d605ecb625
MD5 c70983b4035e497f54e5105e9f1dce88
BLAKE2b-256 654d439df3fbddbb8b8e362d44ef37723c23f775e73d56c94979959cf7cf2557

See more details on using hashes here.

Provenance

The following attestation bundles were made for ciris_server-0.5.118.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.118-cp310-abi3-win_amd64.whl.

File metadata

File hashes

Hashes for ciris_server-0.5.118-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 2278b474d1be7a61e42ca3f6a271d2f301211175233bbcc33799be307c149eb9
MD5 b9d683ec5d2f16220d7bf83d39183232
BLAKE2b-256 7a047588a0224130ef2f37a54b0062e13bba24bf371b7b0e0862ad61dbe2573e

See more details on using hashes here.

Provenance

The following attestation bundles were made for ciris_server-0.5.118-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.118-cp310-abi3-manylinux_2_39_x86_64.whl.

File metadata

File hashes

Hashes for ciris_server-0.5.118-cp310-abi3-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 c4f32791add255e17ab380ac759946aed1dfe736db567672d672acd521ca2817
MD5 92c280bfe154246fb4767a0bfab587e8
BLAKE2b-256 532808a2fc686911c2f7f6766da98456910ed4afcf3142ed0cc694da5e527fca

See more details on using hashes here.

Provenance

The following attestation bundles were made for ciris_server-0.5.118-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.118-cp310-abi3-manylinux_2_39_aarch64.whl.

File metadata

File hashes

Hashes for ciris_server-0.5.118-cp310-abi3-manylinux_2_39_aarch64.whl
Algorithm Hash digest
SHA256 150e6e2f3381b3f628136a827632cf8b66890abd728f6874f79277dae9b3ea15
MD5 df12e97a07ec277d800ab8d87f2ac8c1
BLAKE2b-256 eb855d32d5d517bfeec2dd97fc1ef1af4d1a978b7a02b88b7617bc0799756213

See more details on using hashes here.

Provenance

The following attestation bundles were made for ciris_server-0.5.118-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.118-cp310-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for ciris_server-0.5.118-cp310-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e0fdc48296f6a4f5a905a1543a26a4986b28ef62ba26c3cf0afcb8c3624e349f
MD5 027133b476d5631c08e23a8743ccae53
BLAKE2b-256 d14eb993234e32c2a9b830d0d537bcf999e68e58d1d52e4868a0abb7078d90ec

See more details on using hashes here.

Provenance

The following attestation bundles were made for ciris_server-0.5.118-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.118-cp310-abi3-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for ciris_server-0.5.118-cp310-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 78a389b378d4f878fc985f899a51d59df3a5f32c8d72d93ae38a589ab04971e6
MD5 2f4db59542060447ad1eeb7c7e33e4ec
BLAKE2b-256 33a26664a653d138c0ab0d71fd98d263ff45d8bf3096cf830a165673b9032703

See more details on using hashes here.

Provenance

The following attestation bundles were made for ciris_server-0.5.118-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.118-cp310-abi3-android_24_x86_64.whl.

File metadata

File hashes

Hashes for ciris_server-0.5.118-cp310-abi3-android_24_x86_64.whl
Algorithm Hash digest
SHA256 440ceeb3e224e1f1ab91fff6495078ad1c59638376469397cb7b428b16647003
MD5 f21bece8305fe74f608b035996f0d765
BLAKE2b-256 b66a9d2a8b937202f4c0e1aa2caf67a36a04e8854ea4cf536795ab1a4542c833

See more details on using hashes here.

Provenance

The following attestation bundles were made for ciris_server-0.5.118-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.118-cp310-abi3-android_24_armeabi_v7a.whl.

File metadata

File hashes

Hashes for ciris_server-0.5.118-cp310-abi3-android_24_armeabi_v7a.whl
Algorithm Hash digest
SHA256 2616c4620a383d4d6dbaba46593afa55bc023e64f930fd52d1b11ad313af09a8
MD5 3457268ca46e0030ddc0f20f3bdafdd3
BLAKE2b-256 bcceb0472601960814a617d8078556e80600e401fd4e1bb604b19dfcdb87fd9d

See more details on using hashes here.

Provenance

The following attestation bundles were made for ciris_server-0.5.118-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.118-cp310-abi3-android_24_arm64_v8a.whl.

File metadata

File hashes

Hashes for ciris_server-0.5.118-cp310-abi3-android_24_arm64_v8a.whl
Algorithm Hash digest
SHA256 18b9ff36961f72584cbf2b9aa579d05542fcbccb9b1f1f5083047775f1d0cd4f
MD5 e44f29c71499050c715007a5b4648978
BLAKE2b-256 624dc00226e27d107cc5e344428bf32b4b966cbd432f1fa253bc0741616ad834

See more details on using hashes here.

Provenance

The following attestation bundles were made for ciris_server-0.5.118-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