Skip to content

Module Map

Andrei Fedorov edited this page Oct 29, 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 theme["Theme: one, optional"]
    vines["modular-av-dock-vines"]
  end

  subgraph effects["Effects: any number, optional"]
    denoise["modular-av-mic-denoise"]
    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
  cambg --> core
  krisp --> core
  krisp --> livekit
  core -.-> dock
Loading

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