Skip to content

Module Map

Andrei Fedorov edited this page Nov 9, 2026 · 8 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.

An arrow points from a module to what it requires. A dotted arrow is a recommendation: Foundry offers it, you may leave it out.

flowchart BT
  core["modular-av<br/>(core)"]

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

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

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

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

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

  p2p --> core
  livekit --> core
  jitsi --> core
  dock --> core
  vines --> dock
  denoise --> core
  voice --> core
  audiomixer --> core
  audiomixer -.-> dock
  cambg --> core
  krisp --> core
  krisp --> livekit
  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.

flowchart BT
  starter["modular-av-starter-set"]
  core["modular-av"]
  dock["modular-av-dock"]
  livekit["modular-av-livekit"]
  denoise["modular-av-mic-denoise"]
  cambg["modular-av-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