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

Uploaded CPython 3.10+Windows x86-64

ciris_server-0.5.117-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.117-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.117-cp310-abi3-macosx_11_0_arm64.whl (96.2 MB view details)

Uploaded CPython 3.10+macOS 11.0+ ARM64

ciris_server-0.5.117-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.117-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.117-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.117-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.117.tar.gz.

File metadata

  • Download URL: ciris_server-0.5.117.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.117.tar.gz
Algorithm Hash digest
SHA256 17cc22a86ca19b9688334d4f0dd14ef7a985b4de1e1349af0fc4c6f5d0d777aa
MD5 dd54ee0a6554ff8f94734f477920c1d9
BLAKE2b-256 4a32aec8137505798067e601a424c0478f9ca1e40657b08bda91c9bd8e9e6c42

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_server-0.5.117-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 aedd306b1ce6ec5d72ca1703fd9464b7262ca5e947b2b2494bb6694fad401646
MD5 70c70cf301743443015bc9d3d41d8249
BLAKE2b-256 255cd4ee6d056eb81852356b8ecbfd325c1627b5930b7516c69f68e045b9aed3

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_server-0.5.117-cp310-abi3-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 7cc93d9bd3f744c8feb1f933af95dc12bbbd07e6149ac61f149b8e012cf9e26c
MD5 f5b9b009632e931dca8bfe4dd2633c63
BLAKE2b-256 bb9f2a603270ddae20d499e60c80f9325c569b1baa7f50f8299de1fab8360bd0

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_server-0.5.117-cp310-abi3-manylinux_2_39_aarch64.whl
Algorithm Hash digest
SHA256 3ca0fce090c88e34d6b214e85de1aea21c775441d87635043481dc78aaad672b
MD5 80ff0f5f968d439d2e1af905da7e3f12
BLAKE2b-256 979660bbb344c0b35170a7b631a274b489f82a9445972cc5158eeb43a9cfac00

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_server-0.5.117-cp310-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ee94eb802b3eb372c0001d1d43eed567cae016028db27df910419dccefaea1c5
MD5 2a41ba1e687660bacd2351509ee20317
BLAKE2b-256 3b1c18d72a6729aac793cf12b8c8ebd382ca80a530b2359e383c3899f9d66110

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_server-0.5.117-cp310-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 1451c8648d240d553f9c16833b7b553b533e796ad92caa345d8403b1fb81dc9b
MD5 7bb16701c2a560a89e927b4bbe8bf431
BLAKE2b-256 f5ddac11372161b2960deb0c3b5813e69eb5ba6990e21f5a6f09de5ff49290f4

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_server-0.5.117-cp310-abi3-android_24_x86_64.whl
Algorithm Hash digest
SHA256 2b9369f9c26eba0c034fe956c969260cc8514e114471d671db77227b0a59ca67
MD5 e402b5d755b556f3d2ce20f0d7259e79
BLAKE2b-256 4c48c025d64903f9eee18466605ea1f64172e256f85ab1f8d64ba33aa025915c

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_server-0.5.117-cp310-abi3-android_24_armeabi_v7a.whl
Algorithm Hash digest
SHA256 311ba7dfc3b1e8e08f74b9a7b6baf1fd8c067463fe0c771a7d616f8c5ce6ff85
MD5 4373770eb9585bf35e08047e767e5bb0
BLAKE2b-256 ca957935b41f5927c8bfed74cf104dec657e53c988d1f470c4bbd41ec77fc4d3

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_server-0.5.117-cp310-abi3-android_24_arm64_v8a.whl
Algorithm Hash digest
SHA256 8562eb27edd006cbb70a367611b0bb8f05afa58e66e224500e97bd91d1233264
MD5 c44142d8b645cf7febd824c583ca6ecf
BLAKE2b-256 7b2321c07add237f6c1057c9aef9169cd3e4ea2de0899869b3a78493cb18d1e7

See more details on using hashes here.

Provenance

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