Skip to main content

stapel-video

CI coverage pypi downloads python license llms.txt

Video calls: rooms with shareable join codes, an access-level admission model (public / scope-trusted / restricted lobby) with a realtime waiting room over WebSockets, host admit/deny controls, join-token minting through a pluggable video-provider seam (LiveKit by default), and a recording-egress seam (start/stop + a video.egress_ended event) that integrates with stapel-recordings by event, never by import.

Part of the Stapel framework — composable Django apps that deploy as a monolith or as microservices without changing module code.

Install

pip install stapel-video

At a glance

Fact Value
Version 0.5.0
Python >=3.11 (3.11, 3.12, 3.13, 3.14)
HTTP operations 7
Config axes 3
Usage surface 11
Extension points 4
Error codes 49
Fleet dependencies stapel-auth (optional) · stapel-core · stapel-profiles (optional) · stapel-recordings (optional)

Documentation

OpenAPI · capabilities.json · llms.txt (for agents)

What this is

  • Rooms with human-shareable join codes (abc-defg-hij).
  • Admission modelpublic (anyone with the code joins), scope_trusted (members of the room's scope join instantly, others wait), restricted (everyone but the host waits in a lobby).
  • Realtime lobby over WebSockets (Channels) — waiting / admitted / denied, authenticated by the same Stapel JWT stack HTTP uses.
  • Host controls — admit / deny waiting guests.
  • Provider seam — one VideoProvider ABC (mint join token, create room, start/stop recording egress, verify webhook). Swap vendors without forking.
  • Recording is a seam, not a pipeline: start/stop_egress proxy the provider and a video.egress_ended comm event carries the storage key to stapel-recordings — by event, never by import.

Alpha. See MODULE.md for the agent-facing map of seams.

Quick start

pip install stapel-video            # core library
pip install 'stapel-video[livekit]' # + the default LiveKit backend
pip install 'stapel-video[channels]'# + the realtime lobby (WebSockets)
# urls.py
path("video/", include("stapel_video.urls"))

# asgi.py (realtime lobby)
from channels.routing import ProtocolTypeRouter, URLRouter
from stapel_core.django.jwt.channels import JWTAuthMiddlewareStack
from stapel_video.routing import websocket_urlpatterns

application = ProtocolTypeRouter({
    "http": django_asgi_app,
    "websocket": JWTAuthMiddlewareStack(URLRouter(websocket_urlpatterns)),
})

API

Method Path What
POST /video/api/rooms Create a room (creator auto-admitted host, with a token)
GET /video/api/rooms/{join_code} Room info
POST /video/api/rooms/{join_code}/join Join → admitted / waiting / denied
GET /video/api/rooms/{join_code}/participants Participants (anchor-paginated)
POST /video/api/rooms/{join_code}/lobby/admit Admit a waiting guest (host-only)
POST /video/api/rooms/{join_code}/lobby/deny Deny a waiting guest (host-only)
POST /video/api/webhook Provider webhook ingress (signed, unauthenticated)

Configuration (STAPEL_VIDEO)

Key Default What
VIDEO_PROVIDER …livekit.LiveKitProvider Video backend (dotted path)
SCOPE_PROVIDER …scope.DefaultScopeProvider scope_key resolution + membership
DEFAULT_ACCESS_LEVEL restricted Access level for a room created without one
DEFAULT_ADMIT_REQUIRED True Whether new rooms start with the lobby on
LIVEKIT_URL / LIVEKIT_API_KEY / LIVEKIT_API_SECRET "" Default-provider credentials

VIDEO_PROVIDER, DEFAULT_ACCESS_LEVEL and DEFAULT_ADMIT_REQUIRED are the three CTO-facing config axes surfaced in docs/capabilities.json.

License

MIT — see LICENSE.


This page is assembled by stapel-readme from docs/readme.md plus the contract artifacts in docs/. Edit the prose in docs/readme.md; the badges, facts and links above and below it are generated — do not hand-edit README.md.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

stapel_video-0.5.0.tar.gz (69.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

stapel_video-0.5.0-py3-none-any.whl (65.6 kB view details)

Uploaded Python 3

File details

Details for the file stapel_video-0.5.0.tar.gz.

File metadata

  • Download URL: stapel_video-0.5.0.tar.gz
  • Upload date:
  • Size: 69.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for stapel_video-0.5.0.tar.gz
Algorithm Hash digest
SHA256 635e8ed4f194c4dee439c5d32e4f0ee23b22c896be2a6fdfd281bc898f49ed87
MD5 1c52ed9972c35f7e8b88413514f20b3b
BLAKE2b-256 6d3abd95900b8f28277a8249b6f0aca429e24c3be38ff982e63b381cabb4e496

See more details on using hashes here.

Provenance

The following attestation bundles were made for stapel_video-0.5.0.tar.gz:

Publisher: publish.yml on usestapel/stapel-video

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stapel_video-0.5.0-py3-none-any.whl.

File metadata

  • Download URL: stapel_video-0.5.0-py3-none-any.whl
  • Upload date:
  • Size: 65.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for stapel_video-0.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d9946e64c54cdc3d8d1353b3b31d4a5abde350ef599401c1d866e22abc51423e
MD5 19b1e0d4737646c012a0fec01838f448
BLAKE2b-256 f4fa07abd9fd33592b70ec9835a41448de8e972ebf9ce8442dcdfac2b61bde6b

See more details on using hashes here.

Provenance

The following attestation bundles were made for stapel_video-0.5.0-py3-none-any.whl:

Publisher: publish.yml on usestapel/stapel-video

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

0.11.2

2 files

0.11.1

2 files

0.11.0

2 files

0.10.0

2 files

0.9.0

2 files

0.8.0

2 files

0.7.0

2 files

0.6.0

2 files

0.5.1

2 files

This release

0.5.0 This release

2 files

0.4.1

2 files

0.4.0

2 files

0.3.0

2 files

0.2.5

2 files

0.2.4

2 files

0.2.3

2 files

0.2.0

2 files

0.1.2

2 files

0.1.1

2 files

0.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page