Overview
Tsunagu is the self-hosted backend behind Moku: a Go API server handling your library, database, download queue, and media pipelines, with a JVM sandbox that loads and runs source extensions.
Desktop Moku builds bundle and supervise Tsunagu automatically. You only need this section if you’re running it standalone, remotely, self-hosting it on a NAS, or developing against it.
Layout
backend/ | Go API server: GraphQL, REST content routes, DB, download queue, trackers, content filtering |
sandbox/ | Kotlin/JVM extension loader and executor, built with Gradle |
proto/ | The gRPC contract between backend and sandbox |
Why Go, with a JVM sandbox on the side
Tsunagu positions itself as a leaner alternative to running a full JVM server: the JVM is confined to the one job that needs it, running community extension code, while everything else (the API, the database, downloads, image proxying) is Go. See Architecture for how the two talk to each other.
API
A single GraphQL endpoint at http://localhost:6007/api/graphql, with a playground at /api/graphql/playground. A handful of REST routes exist alongside it for byte streaming and auth; see API reference.