Embed a Pulsar node in your app

Your app ships a small, gentle Pulsar node. Users are told up front, contribute spare capacity while the app is open, and earn Astra Points — without needing an Astrina account first. They can link one later to keep what they earned.

Foreground onlyRead-only checks onlyNo account needed

01The resource envelope

The SDK holds a gentle, adaptive ceiling you cannot exceed — this is what keeps apps inside App Store and Google Play rules and keeps devices cool.

On charger + Wi-Fi + screen on: up to your configured cap (we suggest ≤15% CPU).

On battery: ≤5% in short bursts; nothing below 20% battery, in low-power mode, or when warm.

Storage is opt-in and capped (up to 1 GB), shown to the user and clearable; off by default.

In app stores the node runs only while your app is in the foreground. Read-only checks only — never your users' code, never relayed traffic.

02Enrol a device (no account needed)

Your app authenticates with its own key and enrols a provisional device. The points it earns are held in escrow until the user claims them.

HTTP
POST https://astrina.io/api/v1/node/app-enroll
X-App-Key: pa_…            (your app key)
{ "kind":"mobile", "consent":1, "caps":{"uptime":1,"perf":1} }
→ { "device_id":123, "secret":"pn_…", "claim_code":"CLM-…" }

03Link an account later — Login with Astrina

When the user wants to keep their points, send them through Login with Astrina — the same identity broker other Astrina integrations use — then redeem the claim code. The escrowed points move to their real account.

HTTP
POST https://astrina.io/api/v1/node/claim
(the user is signed in with Login with Astrina)
{ "claim_code":"CLM-…" }
→ { "ok":true, "device_id":123, "ap":12.5 }

04The SDK

One embeddable core does the loop; your app makes three calls. It also draws the consent screen and stores the device secret and claim code for you.

Dart
final pulsar = PulsarApp(appKey: 'pa_…');
await pulsar.enroll();                 // once, after the consent screen
Timer.periodic(Duration(seconds: 60), (_) => pulsar.tick());   // while in foreground
await pulsar.linkAccount();            // opens Login with Astrina, then claims

05Get an app key

App keys are issued after a short review. Tell us about your app and we will send a client id and key. Write to [email protected].

The rules, in plain words

  • Tell users before they install. Participation may be required to use your app, but it is never hidden.
  • Gentle mode is not optional and cannot be turned up past the safe ceiling.
  • Escrowed points only ever move to a real account through a verified Login with Astrina.
  • Provided as is. Read-only checks only; no code execution, no traffic relay.

What this page answers

  • embed a node in an app
  • monetise an app without ads
  • SDK for spare device capacity
  • revenue share for developers
  • what is a Pulsar node inside an app
  • how a Pulsar node inside an app works
  • a Pulsar node inside an app explained
  • a Pulsar node inside an app guide
  • how to start with a Pulsar node inside an app
  • a Pulsar node inside an app reviews
  • is a Pulsar node inside an app worth it
  • a Pulsar node inside an app pricing
  • a Pulsar node inside an app alternatives
  • a Pulsar node inside an app for beginners
  • why a Pulsar node inside an app
  • a Pulsar node inside an app — what you get