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

Uploaded CPython 3.10+Windows x86-64

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

Uploaded CPython 3.10+macOS 11.0+ ARM64

ciris_server-0.5.119-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.119-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.119-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.119-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.119.tar.gz.

File metadata

  • Download URL: ciris_server-0.5.119.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.119.tar.gz
Algorithm Hash digest
SHA256 e57f5fe2ca3acb9630b1270fbbc70d4e70f3db0fc57c46f74303e4a74a7e1908
MD5 dfd4ce261ba776f3fdef265452e0bafe
BLAKE2b-256 bf4124c2c14cb2a7d66d0c9ca55b41878fa9aecbf6fe81d059aa6a68daea28cf

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_server-0.5.119-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 7ed58bd044bacb3b397d49e4eb5a419b21594cb95b4b56b6a94e8f87dca496c2
MD5 c5c73493cd6d92c0a5e299447b6a495a
BLAKE2b-256 e4e20694fdd6813b5e279756d4dfbc71ee884f27d89cd4dc074837b0690ffd33

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_server-0.5.119-cp310-abi3-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 d45dde96d5a543b901f77787b2c8150fea1213d4874beace25d0fee3961b823d
MD5 5a415abd21a2c40e74aa3069b02fc760
BLAKE2b-256 12162a9d133f58694a215de30228df2bc005f9558b8871e6ef7ca941e401d5ac

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_server-0.5.119-cp310-abi3-manylinux_2_39_aarch64.whl
Algorithm Hash digest
SHA256 023802cb294f34f25d51dc1fcc98f914e9cadf4c2af51ec3ef9f5df50b4d6021
MD5 2bc1d4e67f023b0350e287c73938c3d1
BLAKE2b-256 48eeddd2cb1dec65852b5a94e17d98f29aadea84b1a6c6106324cd59abc2b6f5

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_server-0.5.119-cp310-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2930d359445c551d08098b51469070f59830be4207cbbe5d9bd43deacfbfe729
MD5 773bacf0a11e555978b9d30920b65bdc
BLAKE2b-256 68b6d62bee918a4af725b37a3fd674dea0e8c1909c5d78c54e950977bb62ff3b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_server-0.5.119-cp310-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 94abef567aca5af4e5f63dabdfcf06e26b5025d1f2df9eca13b329a00df5e768
MD5 64afcb65d6b0d161241019b4e0b207d8
BLAKE2b-256 3222eba1e0ceaa5fba4bbf9cd604298e002b8ca03a1ebdcd58d974994203ad38

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_server-0.5.119-cp310-abi3-android_24_x86_64.whl
Algorithm Hash digest
SHA256 f475016c0eea836bc66ebf40d76cb8d3639e24e611ed2a65fd7b7b24c21e89f0
MD5 20701f2ff96233c509c8e2f9f128dcc6
BLAKE2b-256 b5abfeeab30fb3f0e1b7d1c052bf7ffdaaecf55fe56cb25e9100d7d47ac3a155

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_server-0.5.119-cp310-abi3-android_24_armeabi_v7a.whl
Algorithm Hash digest
SHA256 09c4d82df9b70bac18b0782d4303db4712105c6eb82400d08df7b68debccc171
MD5 fd0176855f16e233719c04b2f6d2d5f6
BLAKE2b-256 05f8386e8cae0cc2d5520113a30309895a2244344a6d3579cea20792f40582fc

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_server-0.5.119-cp310-abi3-android_24_arm64_v8a.whl
Algorithm Hash digest
SHA256 7691f9a748469b3d6267b15e4a45151264adfd582048beb99483800d86e1e9aa
MD5 9046f2f198425f205cf2a098f6d06228
BLAKE2b-256 86423590521cbb936d416b2bdbeaf7b916116fd9e7dafc76f9a7019504a2884b

See more details on using hashes here.

Provenance

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