Focused WebRTC communication for clear calls, quick room joins, and modern collaboration.
Shared screens, chat, reactions, mobile-first layouts, and a clean interface built for real conversations.
Preview · Highlights · Quick Start · Development
- WebRTC video rooms with participant-first layouts
- Shared screen focus and browser fullscreen support
- Mobile-first conference behavior with draggable selfie preview
- Per-user volume controls and participant presence indicators
- Built-in chat, reactions, and invite sharing
- Optional camera filters and background effects
- Go backend with static frontend, easy to build and deploy
git clone <your-repository-url>
cd owly
CGO_ENABLED=0 go build -ldflags='-s -w'
mkdir groups
echo '{"users":{"owner":{"password":"change-me","permissions":"op"}}}' > groups/public.json
./owlyOpen:
https://localhost:8443/group/public/
Then sign in with:
- username:
owner - password:
change-me
- Direct video calls with adaptive conference layouts
- Shared screen focus mode
- Per-user audio controls
- Chat, emoji, and reactions
- Group-based access control
- Invite links
- Built-in TURN support
- Automated frontend, backend, security, and smoke checks
- Compact mobile layout
- Draggable and collapsible selfie preview
- Focus mode for participant tiles
- Best-effort audio output switching where the browser supports it
npm run lint
npm run test
npm run test:security
npm run test:smoke.\build.cmd build.\build.cmd blurAn example Helm chart is included in charts/owly.
Install it with:
helm upgrade --install owly ./charts/owly \
--set image.repository=ghcr.io/yanadevops/owly \
--set image.tag=latestBy default the chart:
- exposes Owly on port
8443 - creates persistent volumes for
dataandrecordings - enables
livenessProbeandreadinessProbeagainstGET /api/health - ships a sample
publicgroup through a ConfigMap
Override values.yaml to plug in your own image, ingress, storage class, and group configuration.
The built-in health endpoint is unauthenticated:
GET /api/health
HEAD /api/health
It returns 200 OK with {"status":"ok"} for GET. The Helm chart defaults probe scheme to HTTP because the sample chart runs with OWLY_INSECURE=true; if you terminate TLS inside the pod, set probes.liveness.scheme and probes.readiness.scheme to HTTPS.
static/- frontend assetscharts/owly/- example Helm chart for Kubernetes deploymentgroup/- room and permission logicrtpconn/- WebRTC client and stream handlingwebserver/- HTTP and static deliveryturnserver/- TURN integrationscripts/- local validation helperstest/- frontend and browser smoke coverage
MIT. See LICENCE.


