stax-sdk
v0.1.1
Published
Drop-in usage metering SDK — auto-captures outbound API calls and reports them to Stax.
Readme
@stax/sdk
Drop-in usage metering for Node apps. One init() and every outbound API
call your app makes (Claude, OpenAI, Firecrawl, Exa, …) is captured and
reported to Stax — no per-vendor wrappers, no proxy, no card data.
Setup
Option A — scaffold (recommended)
npm install @stax/sdk
npx @stax/sdk init --key stax_yourkey --endpoint https://app.stax.devThis drops a stax/ folder into your app (like trigger.dev init):
stax/
├─ config.ts # your key, endpoint & options (defineConfig)
└─ index.ts # boots Stax — import this onceThen load it once — the only edit to your code:
import './stax'; // first line of your startup file…or preload it without touching your code at all:
node --import ./stax/index.mjs your-app.jsconfig.ts is fully typed via defineConfig, so you get autocomplete on
every option.
Option B — manual
import * as Stax from '@stax/sdk';
Stax.init({
apiKey: process.env.STAX_KEY!, // identifies your project
endpoint: 'https://app.stax.dev', // optional; defaults to local dev
});Either way: call once, as early as possible. That's it — your existing vendor SDK calls are now metered automatically.
Attribute usage to your end-users (optional)
await Stax.withTenant('customer-123', async () => {
await anthropic.messages.create({ ... }); // tagged to customer-123
});Wrap a request/job once; every captured call inside it — however deep — is
tagged to that tenant via AsyncLocalStorage.
How it works
- Hooks global
fetch(undici) andhttp/httpscore, so it captures calls regardless of which HTTP library a vendor SDK uses. - For vendors that report usage (Anthropic/OpenAI token counts), it reads the exact number from the response; otherwise Stax estimates per call.
- Events are batched and shipped in the background using the original
fetch— if Stax is unreachable it never blocks or breaks your app.
Scope
It meters traffic from the process where it's installed (your server-side egress). It does not see calls made outside your app (e.g. a vendor's web UI).
