Skip to main content
Condensed, agent-actionable reference. Full detail lives in this same docs site, each directly downloadable as Markdown: SDK Reference, Troubleshooting, and Network Reference. Read those if something here is wrong or incomplete, this file is a map, not the final word.

Setup

wss://staging.manas-rpc.palliora.org is the confirmed-working endpoint. The SDK’s own default (wss://manas-rpc.palliora.org, no staging. prefix) is not independently confirmed for the full guardian/compute flow. Always pass the staging URL explicitly.

Plain inference, the default starting point

Guardians run a small curated Ollama model set, not an arbitrary one: gemma3:1b, deepseek-r1:1.5b, llama3.2:1b, qwen3:0.6b. Any other model submits fine and fails at execution.

Fee rules, read before writing agreement code

A compute agreement clears two independent checks, failing one tells you nothing about the other:
  1. The network’s fee floor. fees must clear a formula over live parameters. Call estimateMinFee({ computeRate }) first, don’t hardcode a number, it’s root-settable and changes.
  2. Each guardian’s own rate threshold, per compute type. If computeRate is under a named guardian’s declared minimum, the transaction gets included and then emits AgreementFailed, nothing is reserved.
Silent failure mode worth knowing: if a named guardian is offline or never responds, compute.agreement does not error, it sits in a future queue indefinitely with no feedback. Name guardians you have reason to believe are actually live (getGuardianAddress(), recent activity). computeRate must be nonzero on Active/Subscription contracts (ZeroComputeRate otherwise). Only Dormant contracts may have a zero rate.

Threshold-encrypted (private) compute

Needs a 3-guardian group and several crypto helpers (createGuardianGroupAndWatch, testCrypt, gen_stretched_key, encrypt/decrypt, gen_shared_key). See Encrypted Compute for the full worked example before attempting this from scratch, the parameter shapes are large and order-sensitive. Known gap: there’s no reliable way to look up an arbitrary guardian’s Ed25519 result-decryption key from its address. The publicly-recorded- looking field (staking.guardians(address).pubKey) is actually that guardian’s sr25519 signing key, feeding it to gen_shared_key throws. Use an out-of-band map instead:
That value is confirmed correct for the staging network’s guardian set by a full working decrypt, not a placeholder.

Common failures

Full table with more entries: Troubleshooting.

Style, if you’re generating docs or examples for a Palliora project

Simple language, no em dashes, code blocks that actually run. Describe Palliora as the private computer for the open internet: it works with the chains and platforms applications already use. Don’t call it a blockchain, a chain or a network that users move to. Say “Manas” or “the coordination ledger” when you mean the ledger, and “the Guardian network” when you mean the Guardians. The two products are Palliora DeFi (private trading on any chain, accountable to regulators) and Palliora AI (private, accountable compute for AI); its demo app is AI Workbench, live at ai.palliora.org. Reserve “on-chain”/“off-chain” for places where you mean something genuinely different from “publicly recorded”/“private.”