Content hub Console

Public APIs: no key, no auth, no trust required.

Everything the console itself displays, it reads from these endpoints. They are plain JSON files served from the public repository and its GitHub Pages mirror. There is no backend to register against, no token to request, and no rate limit beyond a CDN. The network writes them from the cloud on fixed cadences; the browser reads them directly. What you fetch is exactly what the site shows.

Ground rules: all endpoints are GET-only, return JSON, and send Access-Control-Allow-Origin: * (GitHub Pages default). Freshness is documented per endpoint. The cadence is enforced by workflows in the public repos, and the verification bot checks the live site against these files every cycle - so a stale endpoint shows up as a red mark on the console, not as silence.

1. Network truth

GET /status.json
liverefreshed hourly by the chain watcher

The freshness verdict of the public witness line: whether the last Steem anchor is within threshold, the anchoring transaction, its block, and the recent anchor history. This is the file to poll if you want one answer to the question "is the network's public witness alive right now".

curl -s https://roshpinacare-sys.github.io/Domain/status.json | head -20

Key fields: freshness.verdict (FRESH / STALE / DORMANT), freshness.ageHours, witness.txid, witness.block, witness.explorer (open the anchoring transaction yourself).

GET /mirror.json
liveregenerated on every heartbeat

The derived public mirror of the sovereign ledger: agent roster (public keys only), the latest 120 attestations, the latest 30 checkpoints with their Merkle roots, the anchor lines (Steem and Hive txids per checkpoint), market events, brain key status, and the ACID discoveries list. Secrets are filtered before publication by the gate in the sovereign repo - this file is what remains.

curl -s https://roshpinacare-sys.github.io/Domain/mirror.json \
  | python3 -c "import json,sys; d=json.load(sys.stdin); print(d['stats'])"

Key fields: stats.attestations, stats.checkpoints, stats.headHash, checkpoints[].root, anchorLines.steem[].txid.

GET /saos-live.json
livepublished by the saos-live workflow

The state of the SAOS token layer: genesis record, state root, supply, wallets, and the operation log. The initial mint is verified one-to-one and documented; there is no promise of profit anywhere in this file, by design.

Key fields: stateRoot, genesis.initialMint, genesis.maxSupply, state.supply.

2. The money layer

GET /dex/world.json
liveevery ~2h by dex-beat (480 deterministic ticks per beat)

The complete exchange state: markets with fair prices and spreads, the order books, liquidity pools with reserves and accrued fees, wallets, the trade tape, and proofs. Prices are anchored to the median of three external feeds; the glide toward the anchor is recorded in the ledger.

curl -s https://roshpinacare-sys.github.io/Domain/dex/world.json \
  | python3 -c "import json,sys; d=json.load(sys.stdin); print(d['state']['height'], 'height')" 

Key fields: state.height, markets[], pools[], tape[].

GET /dex/watch.json
liveevery 20 min by dex-watch

The keyless deposit watcher: which chains are being watched (TRON, Ethereum, Solana, Bitcoin), over which public RPCs, with what cadence and minimum deposit. This is the machine that turns a real on-chain deposit into a credit - and it holds no keys while doing it.

Key fields: chains[].chain, chains[].address, chains[].status, depositsTotal.

GET /dex/deposits.json
liveon every detected deposit

The open deposits ledger: every real deposit detected on the watched addresses, with chain, amount, transaction id, and detection time. Claims are settled by the DEX heart only against entries that exist here.

GET /dex/grid.json
livedaily at 03:17 UTC by dex-grid

The external grid runner status: the verdict on the public Steem order book, the parity line, the counted fills with their measured surplus, the fuel (powerdown schedule), and the honest blocker. The policy is published in the file itself: never sell below external value.

3. The fleet and its verdict

GET /agents/registry.json
livehourly by agents-watch

The cloud fleet registry: every agent in every repo, its layer, schedule, role (what it takes in and what it puts out), measured run statistics, and its current state. This is the roster behind the "22 cloud agents alive" number on the console - and it is measured, not declared.

Key fields: reposWithAgents[], agents[].state, agents[].stats.successRate, agents[].lastRun.

GET /agents/gh-snapshot.json
livehourly by agents-watch

A snapshot of the org's repositories and recent workflow runs, written with a token by the hourly cloud run. Purpose: the GitHub API is rate-limited to 60 requests per hour per anonymous IP, so nearly every first-time visitor would otherwise see empty tables. The console falls back to this file - labeled as a snapshot with its age, never presented as live data.

GET /agent/state.json
liveon every agent handoff

The operator state: current phase, current task, last handoff time, open loops with priorities, the money routing plan, and the publishing authorities. This is how any agent, in any fresh session, continues exactly where the last one stopped.

GET /agent/requests.json
liveon every operator request

The public request queue: what the operator asked for, when, and whether it was closed with evidence. Requests that were not delivered simply stay open here, in public.

GET /agent/verify/results.json
liveevery cycle by the independent verify bot

The machine verdict on the console itself: 27 assertions measured against the live site (not the repo), each with pass/fail and detail. The contract is in agent/verify/assertions.json and the runner is agent/verify/run.mjs - you can run it yourself.

Key fields: summary.total, summary.passed, summary.failed, summary.verdict.

4. Identity Verification API

For verifying that a Steem account controls its keys (the gate the operator console uses), see the full reference:

How to consume honestly

This index is itself part of the public site. If an endpoint is listed here but does not answer, that is a failed assertion - exactly the kind of thing the network is built to admit in the open.