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

Uploaded CPython 3.10+Windows x86-64

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

Uploaded CPython 3.10+macOS 11.0+ ARM64

ciris_server-0.5.125-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.125-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.125-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.125-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.125.tar.gz.

File metadata

  • Download URL: ciris_server-0.5.125.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.125.tar.gz
Algorithm Hash digest
SHA256 0952c65ce8161d471cd7ce9418dbf24999fd0af887d759688364d1aa2a32ab92
MD5 cd338258587e554544436fafeb486909
BLAKE2b-256 2deb47ef6574433ec1836da668c09f3c26ad96a2f8dd6fcbe1c4930f3448d194

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_server-0.5.125-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 d8ccc4c458fc7aa9452b80d28d79d9b7ad5ccb4550045f843456b6b54806cae2
MD5 618cc6d3256d88ef75951a176384ca86
BLAKE2b-256 0bf2094409881aa43405d926e71b8bde70c4e86c900e1be35b2f9cb370011b72

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_server-0.5.125-cp310-abi3-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 401d50abac9a0db0a665b499ac185b75f2f8fdbf492af15da7211544d2ad73d0
MD5 7f868ae78487ca06fed1f049f6907a78
BLAKE2b-256 2702e8d20d46a972b9a169cc97b1ce32b9b6b4e7e91945458aaf40673af6d9bd

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_server-0.5.125-cp310-abi3-manylinux_2_39_aarch64.whl
Algorithm Hash digest
SHA256 df745b533cfe6e0930c3c790b19740365941d700815fd8469ed6186c75ae559c
MD5 56876b1f7574a65b513c968115a77d20
BLAKE2b-256 42de82dd50c97d9541b14d1e73bbc712f8a0f6a63725cdb31273cd55e885543c

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_server-0.5.125-cp310-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7c96537a0833b92d78933501ab7723d4a2fc2419bf714f62ee93e0fd738370eb
MD5 96bd4fd06fc6294660c59f0abb12f761
BLAKE2b-256 097cf191a2f308515b59253665334e28a8189fff10b48f3a8934466da34017f9

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_server-0.5.125-cp310-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 7d4b00001038804de256206586ec78f8c515a300ad053bf53a67cfda71a73475
MD5 fa6b80359d2d9fdd27c7054c682e58f7
BLAKE2b-256 49f1e658e941333e5000839851b180823a4dcd67ba9cffc6af211571fdd6f436

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_server-0.5.125-cp310-abi3-android_24_x86_64.whl
Algorithm Hash digest
SHA256 6ed493b10cbbf326d5bfcd42658a506bdda0e4dff626167cbfd9458c566cbc55
MD5 7f8c457db228787ba7d9dc12c382b2b8
BLAKE2b-256 da3be0b4953baaf89b0309707efbd2f4f7a454b0b61b5b95fc0785e9685219c9

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_server-0.5.125-cp310-abi3-android_24_armeabi_v7a.whl
Algorithm Hash digest
SHA256 ee9de995997f09dea95193045057d6012ee765c9d2d02cb2bed85861c03e0e2d
MD5 5936385b903698a5872b05e7b5316e10
BLAKE2b-256 fef2e9bafc881dba0de11e4194266310567d515e7115a851f6bade5eae7dbfec

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_server-0.5.125-cp310-abi3-android_24_arm64_v8a.whl
Algorithm Hash digest
SHA256 7e64a190bc9b76d5bc7abe18a7e418df6b14135241d0509f4ae7b5bda9d62320
MD5 5d0d0e2c4de095b8cb8ce50005de47c8
BLAKE2b-256 756a0b7cca3c3f6828199433a7a0e9b1bdb6be6bd3b815682cc34da814b5c077

See more details on using hashes here.

Provenance

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