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

Uploaded CPython 3.10+Windows x86-64

ciris_server-0.5.122-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.122-cp310-abi3-manylinux_2_39_aarch64.whl (90.6 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.39+ ARM64

ciris_server-0.5.122-cp310-abi3-macosx_11_0_arm64.whl (96.2 MB view details)

Uploaded CPython 3.10+macOS 11.0+ ARM64

ciris_server-0.5.122-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.122-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.122-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.122-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.122.tar.gz.

File metadata

  • Download URL: ciris_server-0.5.122.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.122.tar.gz
Algorithm Hash digest
SHA256 1e6723e176cc92147436fc74b5c6ac3b3a874fbf3eb28feb8850587cf6820620
MD5 b316f43cdb8bb3d711a3c0f0340ca658
BLAKE2b-256 0a994e87a195db810d6252319af293d579523ec47c1060c9ad14709e082fb3ae

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_server-0.5.122-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 d83cdc2af462b15db79b498781f209f5287f9eccc9b1d0dbfc431cc755c8c949
MD5 cbd945e0622a6b1560207e1c7bc0102e
BLAKE2b-256 2b35776c921eb894d1a45dd334d689578cf6a1b020b4894e2d0dfb1e4ad7adc0

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_server-0.5.122-cp310-abi3-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 31da4151d1f8186028b5b7cc3489b5a4adc5baae636602e4360de4d9894d5478
MD5 d5ff9d075f71ac10082c8acd893cae74
BLAKE2b-256 61f55a519658f90dbc91243d84175cb9dcebf9cf7898b2bdd10477c1286e2e32

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_server-0.5.122-cp310-abi3-manylinux_2_39_aarch64.whl
Algorithm Hash digest
SHA256 d03d785cb37c07833077ad2e6dac662e38662848e0a05cfd6f11a3bb21341f1b
MD5 1f262b653b56b2d25aa363f406b1101f
BLAKE2b-256 11b9cd3d933e94a05acdb70949e10238a824fcecf636675ac4f4cc5040b92b0a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_server-0.5.122-cp310-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e84ffe3b0270a26ce466d13dc65607bce472c47061c7a0545cdc076b9626b33c
MD5 3b10842a67c37752a8002b3cdc8e2150
BLAKE2b-256 0c29be89da188e15d838c277e43331d72436a0b1062ba8c15c4eafee7f4b319c

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_server-0.5.122-cp310-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 5972bc7977c778c7aac4d80d085bcdad793dab1fb0a035259d0668f544b8a350
MD5 9e4d91506d9f84c49eb6c7031a5c7a3a
BLAKE2b-256 ed9ae61415aee56bd2d80a61e49d1df7de9489fad656e257ec615ab3796a4e2a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_server-0.5.122-cp310-abi3-android_24_x86_64.whl
Algorithm Hash digest
SHA256 2c9e3117f229e4c0e14ea8d9933e56c7eb81b373395c94f9b2ede467c8499945
MD5 9b2933e75c8576bfaa283505521659d5
BLAKE2b-256 d90258fcd8e62f4f8a40648f2fa5e9b43d82d1172ed0ab864a583a1d3397123e

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_server-0.5.122-cp310-abi3-android_24_armeabi_v7a.whl
Algorithm Hash digest
SHA256 a4671b8214386523a90d378d82770de67067b0bc90bd5bc97e0f0ef01ab752de
MD5 ffe3ecc64e3820e9309114345cc74fb9
BLAKE2b-256 1ef80a4fb4e361f1a344131a288407f0992ce5265d19c39562e9a0566d18cffa

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_server-0.5.122-cp310-abi3-android_24_arm64_v8a.whl
Algorithm Hash digest
SHA256 c216dbff49249deb04d5d3616a8cc7f073f47f8325b51a16668ea76441b15c26
MD5 d519b2f1b3fac2ad70229db64cc3d485
BLAKE2b-256 969d5fdf04dd26a4b58f87e8b97099c136aa85d04e9aef7054d40da82d8a15bd

See more details on using hashes here.

Provenance

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