SDKs
Each SDK is a thin wrapper over two HTTP endpoints — batch the events, hash nothing client-side, and never block or crash your bot. Pick your library:
JavaScript / TypeScript
@mochi-analytics/core + @mochi-analytics/discordjs
@mochi-analytics/core + @mochi-analytics/eris
@mochi-analytics/core + @mochi-analytics/oceanic
@mochi-analytics/core + @mochi-analytics/sapphire
Python
mochi-analytics + mochi-analytics-discordpy
mochi-analytics + mochi-analytics-nextcord
mochi-analytics + mochi-analytics-disnake
mochi-analytics + mochi-analytics-pycord
mochi-analytics + mochi-analytics-hikari
mochi-analytics + mochi-analytics-interactions
Go
Another language or library?
Everything the SDKs do is a wrapper over the Ingest API. Implement those two endpoints to instrument serenity, JDA, or anything else.
Shared design guarantees
Every official SDK implements the same core spec and shares the same behavior:
- Events are batched (flushed every 5 s or 100 events) and sent in the
background —
track()never blocks or throws. - Transient failures retry with backoff; the queue is bounded (oldest dropped first), so a dead Mochi instance can never leak memory or crash the bot.
- Raw user ids are hashed server-side with a per-bot salt and never stored.
Each is split into a core client (transport, batching, retries) and a framework adapter (event hooks), so the core never pulls your bot library into its dependency graph.