Skip to main content

Self-hosting

Self-hosting is the first-class deployment path for shyware — you run the ledger (or, for the contract-based backends, just deploy the contract once) under your own operational control. Shared community hosting is the dev-mode alternative: a zero-infrastructure quick-start for evaluation and early build-out, not the default production posture.

What "self-hosted" means to actually run depends on which chain-enforced LedgerInterface backend you pick — there is no single self-hosting story across all five, and the split below is the one that matters most: whether there's a server process to run at all.

Fabric or CometBFT: you run a real validator

ShywareLLC/core's source is not published — it is not something you clone and build yourself. Access is a commercial license issued through console.shyware.fyi: a license key gates a POST /v1/sign-poll-create-style signing capability and, separately, download access to prebuilt release binaries for your platform. This is the same trust model Firestore documents for its own self-hosting-adjacent (Firestore-admin) surfaces — you get a real contract for what the server does and exposes, not the implementation.

What you run

BinaryPurpose
shyvoting-abciABCI state machine + BFT consensus (CometBFT embodiment)
shyvoting-apiREST API + off-chain receipt store
shygeneric-abci / shygeneric-apiDomain-agnostic two-list embodiment (CometBFT, non-voting products)
shyvoting-affinitiesOptional affinity analytics surface — not a dependency of the core runtime; include only if you operate a public analytics surface

Fabric deployments run the equivalent logic as chaincode (createPoll, dealBeacon/revealBeacon/getBeacon, and the domain-agnostic two-list operations) against a Fabric network you provision — see Fabric chaincode-as-a-service for that chain's specific operational detail. The chaincode itself ships as a deployable artifact through the same licensed distribution channel, not as source.

Getting a license

  1. Request access at console.shyware.fyi. A free tier exists for evaluation.
  2. Your issued key authorizes: downloading release binaries/chaincode packages for your platform, and (for embodiments that need it) signing capability for operator-authorized transactions like poll creation.
  3. Point your validator's --license-server/--license-key flags (CometBFT) or CHAINCODE_OPERATOR_PUBKEY_PEM-equivalent configuration (Fabric) at your issued credentials.

Infrastructure

Signing infrastructure is provisioned via Terragrunt against shared modules — each deployment needs only a thin terragrunt.hcl wrapper. See Infrastructure provisioning.

Operator-separation requirement

warning

The ledger node and the reconciling authority (your off-chain linkage store) must be operated by different entities for anonymity-to-operator to hold.

The canonical ledger makes submission_id → payload public. The RA holds identity_hash → submission_id off-chain. A single organization operating both can join them without any collusion event, eliminating anonymous-to-operator assurance.

For self-hosted deployments, the valid RA options are reconcile_authority.operator: "shyware" (Shyware hosts your RA as a separate contracted service — Shyware ≠ your organization as the ledger operator) or reconcile_authority.operator: "independent_third_party". Setting operator to ledger_operator or omitting the field is rejected by assertVotingManifest at config load time.

The community-tier collapse case is the mirror image: a community-tier deployment with reconcile_authority.operator: "shyware" would mean Shyware operates both the canonical chain and the RA — equally prohibited.

See Architecture → The operator-separation requirement for the full configuration table and three-party chain analysis.

Ethereum, Algorand, or Corda: there is no server process

You deploy that chain's contract (EthereumLedgerInterface, AlgorandLedgerInterface, CordaLedgerInterface — see Interfaces) once, then any Node.js app server calling the matching adapter can write to it. The enforcement lives in the contract on the chain, not in a process you operate. No license is required for this path — the contract source for these adapters ships with @shyware/sdk, which is published and open.

Migrating back to community hosting

Self-hosted operators can migrate back to shared community hosting at any time using the checkpoint/export/import ceremony described in Community-to-dedicated migration. Bring Your Own Ledger does not lock you in either direction.