← Symbiont

Symbiont SDKs

Single-file. No package manager. Wget, paste, ship. MIT license.

python symbiont.py

wget https://forge-landing-sable.vercel.app/sdk/python/symbiont.py
# now: from symbiont import Symbiont

Single-file Python client. View source · Download

from symbiont import Symbiont

s = Symbiont()
print("scorecard top 3:")
for r in s.scorecard()[:3]:
    print(f"  {r['grade']:3s} {r['score']:>3d}  {r['host']}")

# Subscribe to events
sub = s.subscribe(
    webhook_url="https://your.site/symbiont-hook",
    events=["registry.new_publisher", "pledge.signed"],
)
print("subscription_id:", sub["subscription_id"])

# Submit your agents.json
s.register("https://your.site/agents.json")

API surface

Both SDKs cover the full public REST surface:

Or skip the SDK entirely and call the REST surface directly. agents.json declares everything.

Why single-file?

Most agent stacks add a dependency only when the value is obvious. A single-file SDK is grep-able, audit-able, and never breaks on transitive-dep updates. If you outgrow it, fork it — MIT.

typescript symbiont.ts

curl -O https://forge-landing-sable.vercel.app/sdk/typescript/symbiont.ts
# drop into your project, import Symbiont from './symbiont'

Single-file TypeScript client. Zero dependencies. Node 18+ or browser. View source · Download

import { Symbiont } from './symbiont';

const s = new Symbiont();
const scorecard = await s.scorecard({ top: 5 });
for (const r of scorecard) {
  console.log(`${r.grade} ${r.score} ${r.host}`);
}

// Subscribe
const sub = await s.subscribe(
  'https://your.site/symbiont-hook',
  ['registry.new_publisher', 'pledge.signed'],
);
console.log('subscription_id:', sub.subscription_id);

← Home · Scorecard · Dashboard · Pricing · Try playground