Skip to content
Rymflux Documentation
Esc
navigateopen⌘Jpreview
On this page

C4 Level 1 — Context diagram

C4 Level 1 — Context diagram

Diagram

C4Context
  title System Context — Rymflux v1

  Person(listener, "Listener", "End user consuming audio through rooms")
  Person(pluginDev, "Plugin Developer", "Writes content-source plugins")
  Person(roomAuthor, "Room Author", "Builds room experiences on the framework")

  System(rymflux, "Rymflux", "Audio platform with plugin system, room framework, playback engine, and unified library")

  System_Ext(filesystem, "Local File System", "Audio files, plugin directories, SQLite database")
  System_Ext(audioHW, "Audio Output", "OS audio device (PulseAudio / CoreAudio / WASAPI)")
  System_Ext(pluginRuntime, "Plugin Runtimes", "Python 3.10+, Go, Rust, or any language that produces an executable")

  Rel(listener, rymflux, "Uses")
  Rel(pluginDev, rymflux, "Writes plugins for")
  Rel(roomAuthor, rymflux, "Builds rooms on")

  Rel(rymflux, filesystem, "Reads/writes library, reads audio files, scans plugins")
  Rel(rymflux, audioHW, "Outputs audio to")
  Rel(rymflux, pluginRuntime, "Launches and communicates with", "stdin/stdout JSON-RPC")

External dependencies

Dependency Type Description
Local file system OS Plugin directories (~/.rymflux/plugins/), library database, audio files referenced by local-files plugin
Audio output OS Platform audio API. Abstracted by cpal. Linux: PulseAudio/PipeWire, macOS: CoreAudio, Windows: WASAPI
Plugin runtimes External Python 3.10+ (reference plugin), any language for third-party plugins. The platform does not bundle runtimes — they must be installed by the user

Key relationships

From To Description
Listener Rymflux Interacts through the desktop app window. Keyboard, mouse, audio output
Plugin developer Rymflux Writes plugins against the protocol spec, tests with conformance validator, installs into plugins/ directory
Room author Rymflux Implements the Room TypeScript interface, registers with the shell
Rymflux Plugin runtimes Launches plugin executables on demand, sends JSON-RPC over stdin, reads response from stdout
Rymflux Local file system Scans plugin directories on startup, reads/writes SQLite library database, reads audio files via file:// URIs
Rymflux Audio output Sends decoded audio buffers to the OS audio device

Notes

  • No external network services in v1. All dependencies are local (local-first, constraint C6). Plugin stream URLs may point to remote servers (e.g., a Jamendo API endpoint), but the core does not host or depend on any remote service.
  • Plugin runtimes (Python, etc.) are not shipped by Rymflux. The reference plugin requires Python 3.10+; third-party plugins may require their own runtimes.
  • Audio output is the only kernel/hardware dependency. Everything else is userspace.

Was this page helpful?