Orbitport is a unified gateway to space-based orbital services operated by SpaceComputer. It gives web2 and web3 applications a single, secure entry point to services served from multiple providers and satellites — today that means cTRNG (cosmic True Random Number Generation) backed by the Aptos Orbital satellites, with more services on the roadmap. This repository ships a local Docker setup (see Running locally).
- cTRNG — cosmic true random numbers, served by the
masterseedplugin from a rolling pool of satellite-harvested entropy. - Randomness Beacon — a background service that pins a continuously updated beacon record to IPFS and republishes it under a stable IPNS name. Public registry:
beacons.yaml. - KMS — multi-tenant Key Management Service backed by OpenBao. Encrypt/decrypt with Transit (
AES_256_GCM96), sign with Transit (ECDSA, Ed25519, RSA), Ethereum (secp256k1, including EIP-191), use PQC ML-DSA / ML-KEM, and store/retrieve arbitrary JSON secrets through the KMS key-store. See thekmsplugin. - spaceTEE — Space Trusted Execution Environment. Planned.
┌──────────┐
HTTP/JSON ──▶ │ gateway │ ──▶ plugin-auth (AuthPlugin)
JSON-RPC │ (Rust) │ ──▶ plugin-masterseed (MasterSeedPlugin)
└──────────┘ │
▼
plugin-aptos-orbital (RandomnessPlugin)
│
▼
api.aptosorbital.com (satellites)
┌──────────────┐
│ plugin-beacon│ ──▶ plugin-ipfs ──▶ IPFS / IPNS
│ (background) │ ──▶ plugin-aptos-orbital
└──────────────┘ ──▶ plugin-masterseed
For a deeper walk-through (gRPC wiring, plugin internals, env-var reference, protobuf workflow, test profiles), see CONTEXT.md. A flat repo map is in llms.txt.
The fast path uses the dev compose stack, which swaps in the authnoop plugin and the Aptos Orbital mocker so no external credentials are required.
git clone https://github.com/spacecomputer-io/orbitport.git
cd orbitport
cp .example.env .env # defaults are fine for dev
make devenv-up # builds images, starts dev compose stack
curl http://localhost:8080/healthzSmoke-test a cTRNG request once the stack is up:
curl -X POST http://localhost:8080/api/v1/rpc \
-H "Authorization: Bearer dev" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"ctrng.Get","params":{"chunks":3}}'Teardown:
make devenv-downThe full HTTP and JSON-RPC reference lives in swagger.yaml. Example request:
curl -X POST http://localhost:8080/api/v1/rpc \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"ctrng.Get","params":{"chunks":2}}'All env vars are prefixed ORBITPORT_. The full list, including defaults, is the source-controlled .example.env; per-knob descriptions live in CONTEXT.md. For local dev, the defaults in .example.env are sufficient.
make test # unit tests (Rust + Go)
make lint # clippy + golangci-lint
make e2e # happy-path e2e against dev compose
make E2E_PROFILE=offline e2e # fallback path (Aptos unreachable)See CONTEXT.md for the full e2e matrix.
We welcome contributions to Orbitport! Please see our contributing guidelines for more information on how to get involved.
Orbitport is licensed under the Apache License 2.0. See the LICENSE file for more information.
