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

Uploaded CPython 3.10+Windows x86-64

ciris_server-0.5.126-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.126-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.126-cp310-abi3-macosx_11_0_arm64.whl (96.3 MB view details)

Uploaded CPython 3.10+macOS 11.0+ ARM64

ciris_server-0.5.126-cp310-abi3-macosx_10_12_x86_64.whl (98.0 MB view details)

Uploaded CPython 3.10+macOS 10.12+ x86-64

ciris_server-0.5.126-cp310-abi3-android_24_x86_64.whl (31.7 MB view details)

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

ciris_server-0.5.126-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.126-cp310-abi3-android_24_arm64_v8a.whl (29.6 MB view details)

Uploaded Android API level 24+ ARM64 v8aCPython 3.10+

File details

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

File metadata

  • Download URL: ciris_server-0.5.126.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.126.tar.gz
Algorithm Hash digest
SHA256 5a071d30923c2753c5e0ae7b94fafbf98d7f498f3a2978d9e4f97484d8f7d664
MD5 352f2d55e72fce64bf931917de7fb84d
BLAKE2b-256 0c10cfb8d63489f31cd1f185f38ad8f5dbfc9053ede9507ffe82c8387dbf299e

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_server-0.5.126-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 2e7ec1ba71be3c11869215daeef1f5cb471c0e1e44b9c7c25340a11771690377
MD5 b69fb9806a9626b1fc4fb88cf90d3376
BLAKE2b-256 0787c82d251f30124e2d7fb04f61dbf1717fc7be8442afd2aa4e7e7ad79d3422

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_server-0.5.126-cp310-abi3-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 b91ad64ac200ac7b6b318011d062f5b37eb017eff5d5d3a1bcc1b89dbc57a1ac
MD5 d89e0bb7eba3c98cb851581e4a3e916a
BLAKE2b-256 5f9b8b642bdad334c2fd86a85b7d85e6452342d3e15dea2b4be4f46862874bbc

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_server-0.5.126-cp310-abi3-manylinux_2_39_aarch64.whl
Algorithm Hash digest
SHA256 03d76c1ed232c32fbfad902712f5d940263d7e9bd18642f0c51f660f5857fdc3
MD5 e91bec9bef7b7f5ca9789c89cfc6d41f
BLAKE2b-256 96e15ddf2da865bdecb1dda5f054904e6e04a7111823bf7c87d732de0633f079

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_server-0.5.126-cp310-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0eca120ef6fa795b6a8e376e46298a7ae7415ad062f3a0caac2ac92b9a13aa61
MD5 3cb2c1ead889a1202894d1bd5edbdd3a
BLAKE2b-256 02e04c7af5be9581de5e591a7ffa683b78bd458debef6d2229b765a35f556c32

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_server-0.5.126-cp310-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 de56d4b33ed52414134ed691ac37f09e5eae4258ce6c4d3d652f35b668ee1cf3
MD5 3ec63d88f75b2d0f87492b6c62a3075c
BLAKE2b-256 0a09f54321c08d18ebc843aee43ced388a7f88a769fdef741f8bc0ce3faaede8

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_server-0.5.126-cp310-abi3-android_24_x86_64.whl
Algorithm Hash digest
SHA256 9445f6407989f177c3bc38263ba45003997be2541f404bf75162c3a5c5de3d67
MD5 7ad667622f6292f507d6eb3f4180a130
BLAKE2b-256 4391ab33ece7c9abee9c02ea5c7d7c20128bd318806986f6b8a50b674e3febbb

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_server-0.5.126-cp310-abi3-android_24_armeabi_v7a.whl
Algorithm Hash digest
SHA256 939560adcef92495b50862aa1aaf74f32bf35e2cf0addd2e52bfb91478b88bf2
MD5 e5f0f0c17d3b80a4e06e5f0fba15f00a
BLAKE2b-256 7c207765573ff0ec85a8983ca251a7cdbac5630d9f81760b120c70d16e099a10

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_server-0.5.126-cp310-abi3-android_24_arm64_v8a.whl
Algorithm Hash digest
SHA256 b39d66807cad8d5d1c3790c2d3ce2d198fe17be4d74d53e460a609d99663408d
MD5 12518c4005428f3b5076e3374bba28e3
BLAKE2b-256 edc804143a615201e64e6c0317d8a2de89705a379b6a647daed4fae442a908b8

See more details on using hashes here.

Provenance

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