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

Uploaded CPython 3.10+Windows x86-64

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

Uploaded CPython 3.10+macOS 11.0+ ARM64

ciris_server-0.5.124-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.124-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.124-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.124-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.124.tar.gz.

File metadata

  • Download URL: ciris_server-0.5.124.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.124.tar.gz
Algorithm Hash digest
SHA256 615ffe7ec6b580941df16087e3db7d25fd5a6bd05dea019621090d7f700658c2
MD5 96617a49ea12bc7944fb137bcdc24bb3
BLAKE2b-256 0dfbf0fd099f9c14ca1bbc0a3e1ab9e932e066a4da5c7d2508285e97bb58db4e

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_server-0.5.124-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 8e41c650dd1706090d46605609a985e03aebc8708b4ea1add4bc3ee530f029cc
MD5 24271d43e7cedac1c2490f854e92b286
BLAKE2b-256 91430a0a162804e02e5ec6d09933492e28f8aeb38a6dbc6cbea9d0fb8ffb9a45

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_server-0.5.124-cp310-abi3-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 6675fc57b0244cb633d93e82a756a79df3cbb83e88392c128c0fa4e28cb3ae96
MD5 0508338c683f6883b448d7ade64420a3
BLAKE2b-256 b81cc416a5bb9289895ee91bf4afd7597a4cc0c3fc77cf32345879b9adcee7e6

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_server-0.5.124-cp310-abi3-manylinux_2_39_aarch64.whl
Algorithm Hash digest
SHA256 7808a8bcf6afc54302fef9d25548c09968788d122b2318a5fca7a43d778e81cc
MD5 48b5401c7bf26dbb925662c3062ad4d9
BLAKE2b-256 b5ca52ccaddfd5e2d5dba84ac3c656d520b818813a3a81aca98649ad162dfff3

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_server-0.5.124-cp310-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0bf1b1dcb352756ef38035135d0ce07d93e52639f754455092903faf592e4a68
MD5 6cfcf50b5f96e8ddf89e1282810aee03
BLAKE2b-256 afd6bce3cc1087f9d6274c96d7afaa1792b1b9dec77bd802b621e458a1e6218a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_server-0.5.124-cp310-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 8c22331823e207cd42b2775cc0fee6b7ee81c21defa7a1fcdaeaecd115ddd96c
MD5 35591797c5ff921868f19e40eb3fe248
BLAKE2b-256 f03d7f05b4fa055eca742dd1f40800c6a18a1090bef7b9d4c3b67f55c7a601f3

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_server-0.5.124-cp310-abi3-android_24_x86_64.whl
Algorithm Hash digest
SHA256 1455c254cc61cf571bc13d48534ecbaf56a2d96de645e4e65cfd1bb89669922e
MD5 5b079b66d8026c4d0fbf9b3f98cfb0cb
BLAKE2b-256 1729a60c0606ee902db5bb9f879be066decf07221959def810b8c1c27de506f9

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_server-0.5.124-cp310-abi3-android_24_armeabi_v7a.whl
Algorithm Hash digest
SHA256 242a6b9579a9b6188b455309aceec3312e7a24e2e6163568ea9a9c426c782122
MD5 a529aad2ae997bab1a4a95b53baed06c
BLAKE2b-256 c80e7bfdce9080bd8e87474d747dafaceb856f8b4f0d2bb57ec760d9824b8c9a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_server-0.5.124-cp310-abi3-android_24_arm64_v8a.whl
Algorithm Hash digest
SHA256 8593b2ec9b1ed60ce6a4e7f839433544049e8abb3592ecf0a02a7c9331792656
MD5 36fc4f686c3d083770850c3478841a02
BLAKE2b-256 e7e041451d7f8c612025cfee10818dda9549848c26cdd0a4829e86343999f933

See more details on using hashes here.

Provenance

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