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 v8.6.0 / edge v4.5.0 / verify-family v5.11.0 (CEG 1.0-RC12). 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.75.tar.gz (1.1 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.75-cp310-abi3-win_amd64.whl (90.0 MB view details)

Uploaded CPython 3.10+Windows x86-64

ciris_server-0.5.75-cp310-abi3-manylinux_2_39_x86_64.whl (89.5 MB view details)

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

ciris_server-0.5.75-cp310-abi3-manylinux_2_39_aarch64.whl (85.7 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.39+ ARM64

ciris_server-0.5.75-cp310-abi3-macosx_11_0_arm64.whl (91.3 MB view details)

Uploaded CPython 3.10+macOS 11.0+ ARM64

ciris_server-0.5.75-cp310-abi3-macosx_10_12_x86_64.whl (93.1 MB view details)

Uploaded CPython 3.10+macOS 10.12+ x86-64

ciris_server-0.5.75-cp310-abi3-android_24_armeabi_v7a.whl (23.3 MB view details)

Uploaded Android API level 24+ ARM EABI v7aCPython 3.10+

ciris_server-0.5.75-cp310-abi3-android_24_arm64_v8a.whl (25.8 MB view details)

Uploaded Android API level 24+ ARM64 v8aCPython 3.10+

File details

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

File metadata

  • Download URL: ciris_server-0.5.75.tar.gz
  • Upload date:
  • Size: 1.1 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.75.tar.gz
Algorithm Hash digest
SHA256 5e2f2c7dda4e2af59901735d39f98b12d2c6931a533f3f98aa5f3a9a4724daea
MD5 c3f46ea14763e3c2f3254c1a725f23c3
BLAKE2b-256 9b4f8f2d414ed78ecf94fb80da8468dbd4fb80c69a281d1e4001feaceb4c902a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_server-0.5.75-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 1e339920ce8ca140ece2ea00227ac6c1af5cbf0041442a6425536e53b1360803
MD5 65f2f245371e6bffc4a1fb7f4d564090
BLAKE2b-256 ec072234ddd189455300cae43415fa362124dcadcd2f06eabcccca86e5d8b670

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_server-0.5.75-cp310-abi3-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 e29e07eaffe1aadf0256005c9892ee9dc45edcabd5fa6498e898f55602b8148c
MD5 a28eef20321d976b2c8314e1f77f14ec
BLAKE2b-256 2c3bd991f1de93b3342a3a94033e46031016966f4af6322a34c06bc75832bc59

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_server-0.5.75-cp310-abi3-manylinux_2_39_aarch64.whl
Algorithm Hash digest
SHA256 49b38f3042f0c2beccec87a3b55ac4bdb5c41e65af068665b06f12b71b5234f4
MD5 44528873915051eaf797e5e3deb99c2f
BLAKE2b-256 fd6d9cbd2fd24dd6e46d6af15f1e8ee5a5a3d0a3c11e1d9afd8673ad7c6e21bb

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_server-0.5.75-cp310-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 cba721273e53c952a708b0e3e21c1390bfe5de40a4f2cbc97d588a6feda52c29
MD5 245f93d7fc23a845645c38bb4c1ffe92
BLAKE2b-256 13fbceced9c0a1389e4c7a6c1829763b8e7efe45e80e169f8c00ba063f32b41d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_server-0.5.75-cp310-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 6b24d70de39ff30650abdd3556a94e757807c730ae5ea490f762974d98077a3f
MD5 88475c71f5667e6a4e3be1dbd80bcd6c
BLAKE2b-256 e32d72cade4ca3cf712490473e6e0f0bb56763ce0b0486310eac3ea9415e35fe

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_server-0.5.75-cp310-abi3-android_24_armeabi_v7a.whl
Algorithm Hash digest
SHA256 e832f73dc872bdbc62241a618e7c83663f4ce9d813672246dc11eb4665274a9a
MD5 603bbda0539c351e537da80518ca247e
BLAKE2b-256 e6dff6614ceb278a339666d3b7346a7b1da774da2612e79b6beb165a21d08cde

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_server-0.5.75-cp310-abi3-android_24_arm64_v8a.whl
Algorithm Hash digest
SHA256 bdc92e1fe9f085aa01356ecc5c6f832493ae85949360e2c730ad6e0e42b2fb44
MD5 c120f432547cc1edc57d09827356ebc7
BLAKE2b-256 e4c47664a910004496d36f6b4274d1261025fdf0319b65c7c2ab38c7dff0a3b9

See more details on using hashes here.

Provenance

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