> ## Documentation Index
> Fetch the complete documentation index at: https://docs.vasl.sh/llms.txt
> Use this file to discover all available pages before exploring further.

# Publish

> Bring a live source, a file, or a URL into Vasl.

Publish is the ingest side of the pipeline. Every source lands on the same server. You pick the protocol the gear already speaks.

Give each publisher a key that ends when the session ends. See [Security](/security).

<CardGroup cols={2}>
  <Card title="WebRTC and WHIP" icon="monitor" href="/publish/webrtc">
    Browsers, and encoders that already speak WHIP.
  </Card>

  <Card title="SIP" icon="phone" href="/publish/sip">
    Room systems and phones, with audio and video.
  </Card>

  <Card title="RTMP" icon="clapperboard" href="/publish/rtmp">
    OBS, vMix, Wirecast, and desk encoders.
  </Card>

  <Card title="RTSP" icon="cctv" href="/publish/rtsp">
    Cameras and recorders, pulled or pushed.
  </Card>

  <Card title="SRT" icon="waypoints" href="/publish/srt">
    Contribution across a long or lossy link.
  </Card>

  <Card title="NDI" icon="tv" href="/publish/ndi">
    Studio gear on the local network.
  </Card>

  <Card title="Files and URLs" icon="file-video" href="/publish/files">
    A file on the install, or a pull from an address you can reach.
  </Card>
</CardGroup>

## After the stream is in

Vasl transmuxes or transcodes so the [playback](/play) protocol can take it. Turn on [recording](/recording) on the same path when you need an archive or a rewind window.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.