Skip to content

Module Map

Andrei Fedorov edited this page Nov 10, 2026 · 7 revisions

Every module needs the core. Beyond that, a world takes one service, at most one camera UI and one dock theme, and any number of effects.

Names are short here: dock is modular-av-dock, core is modular-av itself. An arrow points from a module to what it requires; an arrow from a box means every module in it. A dotted arrow is a recommendation: Foundry offers it, you may leave it out.

%%{init: {"htmlLabels": false, "flowchart": {"htmlLabels": false}}}%%
flowchart TB
  core(["core"])

  subgraph services["Service: one, required"]
    p2p["p2p"]
    livekit["livekit"]
    jitsi["jitsi"]
  end

  subgraph cameras["Cameras: one, optional"]
    dock["dock"]
  end

  subgraph theme["Theme: one, optional"]
    vines["dock-vines"]
  end

  subgraph effects["Effects: any number, optional"]
    denoise["mic-denoise"]
    cambg["cam-background"]
    voice["audio-reverb<br/>audio-echo<br/>audio-eq<br/>audio-radio<br/>audio-boost"]
    krisp["livekit-krisp<br/>(not released)"]
  end

  subgraph mixer["Audio mixer: optional"]
    audiomixer["audio-mixer"]
  end

  services --> core
  cameras --> core
  effects --> core
  mixer --> core
  vines --> dock
  krisp --> livekit
  audiomixer -.-> dock
  core -.-> dock
Loading

The audio mixer and the voice effects don't require each other. The mixer draws whichever effects a world runs, and another mixer could draw the same effects. Without a mixer, reverb, echo, EQ, the radio and the mic boost are reachable only from the core's API: the dock offers noise cancellation alone.

Without the dock, Foundry's own camera dock shows the call. The core conflicts with LiveKit AVClient (avclient-livekit): Foundry won't enable both.

The starter set

The starter set is a module with no code that requires four modules and recommends a fifth, so one install brings a whole setup.

%%{init: {"htmlLabels": false, "flowchart": {"htmlLabels": false}}}%%
flowchart TB
  starter(["starter-set"])
  core["core"]
  dock["dock"]
  livekit["livekit"]
  denoise["mic-denoise"]
  cambg["cam-background"]

  starter --> core
  starter --> dock
  starter --> livekit
  starter --> denoise
  starter -.-> cambg
Loading

Swapping pieces

A slot that holds one module (the service, the cameras, the theme) holds only one: picking another in Plan your modules puts the old one back in the tray, together with what hangs off it. Swapping away from LiveKit takes Krisp with it; dropping the dock takes its theme.

Clone this wiki locally