AEVIONTrust · IP · Globus
DemoAuthQRightQSignBureauPlanetAwardsBankChessPricingAPI
← Developers
AEVION TypeScript SDKv0.8.1

@aevion-io/catalog-client

Zero-dependency TypeScript SDK for the AEVION Hub catalog API.

37 modules·2 statuses·refreshed daily
Step 1

Install

bashnpm i @aevion-io/catalog-clientNode 18+ · 0 deps
Step 2

Quick start

TypeScript
import { AevionCatalog } from "@aevion-io/catalog-client";

const cat = new AevionCatalog();
const live = await cat.mvpsAndLaunched();   // status: mvp | launched
const security = await cat.searchByTag("security");
const stats = await cat.stats();
const badge = cat.badgeUrl("qsign");        // shields.io-style SVG URL

console.log(`${stats.total} modules, ${live.length} live`);
Why

Why this SDK

Zero runtime dependencies
Uses the global fetch. Node 18+ and modern browsers — no transitive deps, no native modules.
Strict TypeScript types
Every response is typed end-to-end. No any. Field projection narrows the return type for you.
Node, browser, edge
Pure-fetch core works in Vercel Edge, Cloudflare Workers, Deno, Bun, and the browser.
Live ecosystem catalog
One client for every AEVION module — status, tags, kind, OpenAPI, OG, health, sitemap, badges.
Reference

API surface

Read
list(opts?)Filtered list with optional field projection.
get(id)Single-module deep lookup. Throws on 404.
stats()Taxonomy: byStatus, byKind, top tags, total.
health()Aggregate per-service probe (ok/degraded/down).
Helpers
searchByTag(tag)List filtered by any-tag match.
byStatus(status)List filtered by one or more statuses.
byKind(kind)List filtered by one or more kinds.
mvpsAndLaunched()Sugar — everything that's live.
topTags(n)Top-N tags computed client-side from stats().
Hub aggregates
openapi()AEVION aggregate OpenAPI 3.1 index across modules.
sitemap()Parsed /api/aevion/sitemap.xml as SitemapEntry[].
Graph
relatedModules(id)Server-computed related modules for one id.
graph(opts?)Full tag-overlap graph — top-K edges per node.
neighbours(id, opts?)Single-source neighbours by Jaccard similarity.
Search & diff
findByText(query, opts?)Substring search across name/code/tags/description.
diff(idA, idB)Field equality + tag-set Jaccard with shared/onlyA/onlyB.
fingerprintModule(id)Stable djb2 content hash for cache invalidation.
URL builders
csvUrl(opts?)Builds a CSV download URL — no network round-trip.
markdownUrl(opts?)Builds a Markdown export URL — great for README tables.
badgeUrl(id)Builds the shields.io-style SVG badge URL for a module.
Live

Live status

37 modules across 2 statuses
Refreshed daily from /api/aevion/registry-stats
Open playground →
Versions

Recent releases

v0.8.0Latest2026-05-14
  • `qmedia.videos({ limit?, offset? })` → `GET /api/qmedia/videos` — public
  • `qmedia.recordPlay(trackId)` → `POST /api/qmedia/tracks/:id/play` — record a
  • `coach.startSession({ topic, fen? })` → `POST /api/coach/sessions/start`.
  • `coach.endSession(id, { notes?, messageCount? })` → `POST
  • `coach.getSession(id)` → `GET /api/coach/sessions/:id` → `{ session }`.
v0.7.02026-05-14
  • **QCoreAI** (`cat.qcoreai`)
  • `providers()` — GET `/api/qcoreai/providers`
  • `health()` — GET `/api/qcoreai/health`
  • `chat({ provider, model, messages })` — POST `/api/qcoreai/chat`
  • **Multichat** (`cat.multichat`)
v0.6.02026-05-14
  • **QStore** (`cat.qstore`)
  • `products({ sort?: 'popular'|'newest'|'trending'|'rating' })`
  • `featured({ limit? })` — 4 buckets (popular/trending/newest/topRated)
  • **QLearn** (`cat.qlearn`)
  • `bookmark(courseId)` / `unbookmark(courseId)` — POST/DELETE
v0.5.02026-05-12
  • `findByText(query, opts?)` — substring search across name/code/description/tags
  • `diff(idA, idB)` — pairwise comparison: field equality + tag-set Jaccard with
  • `fingerprintModule(id)` — stable djb2 content hash of identity-defining
  • Types `TextMatch`, `DiffFieldEntry`, `ModuleDiff`, `ModuleFingerprint`
  • Convenience exports `findByText`, `diff`, `fingerprintModule`
Next

Where to next

SDK: @aevion-io/catalog-client · MIT · Developers · Platform changelog · Public status