Overview

The Lunar stack: the Lunar API, the lunar-js client, the status worker, and the Akiko Discord bot + panel. Start here.

The Lunar stack

These docs cover the whole Lunar Group stack — a JSON HTTP API, its typed client library, an internal status monitor, and the Akiko Discord bot with its web dashboard.

Projects

How the pieces fit

  • Lunar API (lunar-api-v3) is the backbone service: JWT auth backed by MariaDB, role-aware admin routes, and MinIO-served images. Its full route reference lives in the Lunar API sections of the sidebar.
  • lunar-js wraps that API (and the status worker) in a typed client — if you're writing TypeScript, start there instead of raw HTTP.
  • status worker watches everything: services heartbeat it every few seconds, and it opens/resolves incidents on the hep.gg status page on its own.
  • Akiko is the Discord bot; Akiko Panel is how server admins configure it from the browser.

Lunar API at a glance

  • Auth schemeAuthorization: Bearer <accessToken>. Tokens are returned with the Bearer prefix already attached.
  • Content typeapplication/json for every route except the S3 upload, which takes raw image bytes.
  • Rolesuser, support, moderator, admin, owner, ordered by priority 0–4.
  • Rate limits — in-memory and per-scope; exceeding one returns 429 with a Retry-After header.