Onboarding

Get on the Space Data Network in five steps: set up your ID, tap into live space data, publish your own, run software modules, and sell on the built-in storefront.

1

Set up your ID and start your node

One command installs everything — no admin rights needed:

macOS / Linux
curl -fsSL https://spacedatanetwork.org/install.sh | bash
Windows PowerShell
irm https://spacedatanetwork.org/install.ps1 | iex
Terminal
spacedatanetwork init     # creates your secure ID
spacedatanetwork start    # runs in the background
spacedatanetwork status   # confirm it is up

That's it — you're on the network. The init step created your secure ID automatically. There's no account to register and no password to remember. Your ID acts like a tamper-proof signature: everything you share carries it, so anyone can confirm it really came from you and wasn't changed along the way.

The one thing to protect is your recovery phrase — a short list of words the app keeps encrypted on your machine. It can rebuild your ID on a new computer, and anyone who has it can act as you. Back it up somewhere safe, like you would a passport.

Next, tell the network who you are. A short wizard fills in your public listing — organization name, contact info, nothing sensitive:

Terminal
# fill in your public listing
spacedatanetwork identity wizard

# share it as a contact card or QR code
spacedatanetwork identity export --format text
spacedatanetwork identity export --format qrcode

Why bother? What running a node gets you:

  • People can find you. Your listing shows up when anyone on the network searches for organizations or data like yours — no marketing, no sales calls, no integration contracts.
  • You get the data, too. A running node can tune into every open feed on the network — satellite positions, collision warnings, space weather (that's step 2).
  • Everything you share builds your reputation. Each record you publish is stamped with your ID, so your track record is provable, portable, and yours alone.
  • Your contact card carries proof. Export your listing as a normal contact card or QR code. Scan it at a conference and the other side gets your details plus the built-in proof that the card is genuine.
Example contact card (vCard) — long values shortened
BEGIN:VCARD
VERSION:3.0
N:Smith;Jane;;Dr.;
FN:Dr. Jane Smith
ORG:Example Space Agency
TITLE:Chief Scientist
EMAIL:jane@example-agency.org
EMAIL;TYPE=INTERNET;TYPE=peerid:
 12D3KooWQmVz…@peerid.spacedatanetwork.org
EMAIL;TYPE=INTERNET;TYPE=xpub:
 xpub6CExampLe…@xpub.spacedatanetwork.org
END:VCARD
QR code encoding the example contact card

Scan to import
a verified contact

Name, organization, and title import on any phone exactly as written. Only two identity values travel with the card — your network address and your xPub (master public key) — encoded as email addresses at spacedatanetwork.org, a format every contacts app keeps. Everything else derives from the xPub.

Technical details: how your ID works

Your ID is a hierarchical-deterministic (HD) key wallet. spacedatanetwork init generates a BIP-39 mnemonic, encrypts it at rest (XChaCha20-Poly1305), and derives all operational keys from it using BIP-44/SLIP-10 paths:

  • Identity: m/44'/0'/0' → secp256k1 → PeerID + XPub
  • Signing: m/44'/0'/0'/0'/0' → Ed25519
  • Encryption: m/44'/0'/0'/1'/0' → X25519

Your public listing is an Entity Profile Message (EPM) — a FlatBuffer record carrying an embedded Ed25519 SIGNATURE and SIGNATURE_TIMESTAMP over its canonical content. When it changes, the node announces the new EPM content ID (CID) to the network with a signed PNM message.

The card does not need to carry individual keys — that is what derivation paths are for. It carries only the xPub and PeerID, encoded as email aliases (<xpub>@xpub.spacedatanetwork.org, <peerid>@peerid.spacedatanetwork.org) because iOS and Android contact apps preserve email fields but silently drop unknown X- extension fields. Role keys derive from the xPub at the SDK-specified BIP-44 paths: buildSigningPath()m/44'/coinType'/account'/0/index and buildEncryptionPath()m/44'/coinType'/account'/1/index (hd-wallet-wasm). The full vCard export additionally carries X-SDN-EPM-B64 — the complete signed EPM bytes and the source of truth: SDN importers verify its embedded signature and prefer it over the editable display fields. Inspect your identity anytime with spacedatanetwork show-identity.

Prefer a GUI? The desktop app bundles a full node with a dashboard that walks you through the same steps. Docker images and native Linux packages are on the downloads page.
2

Tune into live space data

Your node can now receive live feeds shared across the network — satellite positions, collision warnings, launch events, space weather, and more, in 160+ standardized formats. Open data is free to use, and every record arrives with built-in proof of who published it.

See what's out there:

Terminal
# what data formats does the network carry?
spacedatanetwork search standards OMM --format json

# who publishes orbit data?
spacedatanetwork search providers celestrak --schema OMM

# pull records
spacedatanetwork search data --schema OMM --format csv

Or subscribe from your own software with a few lines of code:

JavaScript / TypeScript
import { SDNNode } from '@spacedatanetwork/sdn-js';

const node = new SDNNode();
await node.start();

// live orbit data, as it is published
node.subscribe('OMM', (data, peer) => {
  console.log(`Received from ${peer}`);
});
Technical details: verification and the read API

Every message on the network is Ed25519-signed by its publisher. Before your node accepts a record, it verifies the signature against the publisher's EPM — provenance is checked automatically, not on trust.

Useful read endpoints on your local node (default 127.0.0.1:5001):

  • GET /api/v1/catalog — every schema registered on the node (public)
  • GET /api/v1/data/records/{schema}/{cid} — fetch a specific record by content ID
  • GET /api/v1/log/{schema} — a provider's publication log (public)
  • GET /api/v1/stats — connected peers, record counts, schemas

All on-wire data is FlatBuffers (Space Data Standards schemas); JSON is available on HTTP responses. SQL-style queries over the binary data are available through FlatSQL.

3

Share your data with the network

Data on the network uses shared, open formats — that's what lets everyone read and verify everyone else's records. Match your data to one of the standard formats:

Your dataFormat
TLEs / orbital elementsOMM
EphemeridesOEM
Conjunction warningsCDM
Maneuver plansMPE
Object catalogsCAT
Tracking / sensor dataTDM, EOO

The SDKs include converters for common formats (TLE, CCSDS XML/KVN), and if nothing fits you can propose a new format. Publishing itself is one call:

JavaScript / TypeScript
await node.publish('OMM', ommData);

Then confirm it's live — search for yourself the way your customers would:

Terminal
spacedatanetwork search providers "Example Space Agency" --schema OMM
spacedatanetwork search data --schema OMM --format json
Technical details: publishing over the REST API

The REST publish endpoint requires an authenticated session at Standard trust or higher — there is no localhost bypass. Log in once at http://127.0.0.1:5001/login (the first account on a fresh node is bootstrapped as Admin), then use the session token from the sdn_wallet_session cookie:

REST
export SDN_SESSION_TOKEN='<your-session-token>'

curl -X POST http://127.0.0.1:5001/api/v1/data/publish/OMM \
  -H "Content-Type: application/octet-stream" \
  -H "Accept: application/json" \
  --cookie "sdn_wallet_session=${SDN_SESSION_TOKEN}" \
  --data-binary @omm.fbs

The session is delivered only as that cookie (bearer headers are not accepted). Automated pipelines can mint one programmatically: POST /api/auth/challenge, Ed25519-sign the challenge with the wallet signing key, then POST /api/auth/verify and capture the Set-Cookie value. CLI commands accept the same token via --session-token or SDN_SESSION_TOKEN.

Technical details: what happens under the hood

Every record is validated against its schema, content-addressed (SHA-256 CID), appended to your node's hash-chained publication log, Ed25519-signed, and announced to subscribers over GossipSub. Consumers can cryptographically verify that the data came from you and was never altered. REST checks: /api/v1/log/{schema} for your publication log, /api/v1/data/records/{schema}/{cid} for any record by content ID.

4

Software modules

The network doesn't just move data — it runs software. Propagators, conjunction screeners, sensor processing, analytics: all of these ship as modules that plug into any SDN node.

Modules are built on WebAssembly, a portable, sandboxed program format. Portable means you compile your algorithm once and that single file runs everywhere; sandboxed means a module can only touch what the host node explicitly hands it — it can't read files, open connections, or see anything else on the machine.

Because of that, modules are isomorphic: the exact same artifact runs in a web browser, on a server node, or on an edge device, with identical results. A demo running in someone's browser is executing the very same code as a production server — nothing is re-implemented per platform.

Your algorithm C · C++ · Rust · Go Module SDK compile · validate · sign module.wasm signed · sandboxed Browser Server node Edge device One artifact — the same module runs in every runtime on the network

The Module SDK handles the whole pipeline — compile, validate, sign, and package:

Terminal
npx space-data-module compile --manifest ./manifest.json --source ./src/module.c --out ./dist/isomorphic/module.wasm
npx space-data-module check   --manifest ./manifest.json --wasm ./dist/isomorphic/module.wasm
npx space-data-module sign    --wasm ./dist/isomorphic/module.wasm --key ./keypair.json
Technical details: module architecture

A module is a WebAssembly artifact with an embedded FlatBuffer manifest (PLG) declaring its identity, methods, and capability requirements. Host↔module calls use the SDS PIV invoke envelope, so any host runtime — browsers via the JS SDK, servers via WasmEdge — speaks the same contract. The canonical artifact path is dist/isomorphic/module.wasm.

The SDK ships a local module lab for interactive development: npm run start:lab then open http://localhost:4318 to compile, validate, and package in the browser. Encrypt an artifact for protected distribution with npx space-data-module protect.

5

Decentralized storefront

The network has a built-in storefront for selling both data products and software modules. There is no central store and no middleman between you and your customers — your own node hosts your listings, and buyers purchase directly from you.

  • One signed listing per product. Each product and version gets a single listing, published from your node and visible across the entire network.
  • Data: field-level access control. Mark each field in a stream as public or restricted — for example, share coarse positions openly while selling the high-precision values.
  • Modules: encrypted delivery. Modules ship encrypted, so only paying customers can run them — and they run on the customer's machine, so your source never leaves yours.
  • Per-customer keys. Every buyer receives their own key, so purchased content can't be shared or resold.
  • Payments are built in. Card, crypto, or prepaid credits, with usage-based billing and enterprise invoicing supported.

Publish your encrypted catalog to your provider node — the request is signed with your ID, and only the node's administrator can publish:

Terminal
spacedatanetwork plugins publish-orbpro \
  --plugin-root ./my-plugins \
  --wallet-env ./wallet.env \
  --wallet-wasm ./hd-wallet-wasi.wasm \
  --target /dns4/<host>/tcp/<port>/wss/p2p/<peer-id>

Buyers browse the storefront the same way they find your open data:

Terminal
spacedatanetwork marketplace list
spacedatanetwork marketplace search <term>
spacedatanetwork marketplace show <listing-id>
Technical details: listings, protection, and delivery

Marketplace listings are canonical signed PLG records — exactly one per product ID and version — served from your provider node at GET /api/module-delivery/listings. Field-level data protection uses the SDS FSM record (each field marked Public, Encrypted, Redacted, or Unavailable). Delivery uses per-customer ECIES (X25519 + AES-256-GCM) key wrapping; payments run through Stripe (card), crypto, or credits.

The publish request is Ed25519-signed by your admin HD wallet and sent over the libp2p protocol /space-data-network/module-publish/1.0.0; the receiving node verifies the signer is an admin before accepting. For a single module over HTTP, POST /api/v1/plugins/upload takes a multipart bundle, metadata JSON (id, version), and signature_hex (Ed25519 over the bundle's SHA-256), using the same session cookie as publishing. A complete two-provider reference scenario ships with the repo: npm run demo:hydra-marketplace; buyer-side integration uses createStorefrontClient from @spacedatanetwork/sdn-js/storefront.

QR code linking to this onboarding guide

Onboarding · SDN

Share this guide — the code points straight here.

Contact tj@edgesource.com tjkoury@gmail.com @TJKoury LinkedIn Signal