`make run` no longer starts the metadata collector and the multi-user transcriber. On my machine, this saves about 400 MB of RAM and almost 2% CPU, out of the 11% the stack uses. Start them with `make run-agents` when needed. Disable `METADATA_COLLECTOR_ENABLED` by default in `common.dist` so the backend does not dispatch jobs to an agent that is not running, and document how to enable each agent in `developping_locally.md`.
5.2 KiB
Getting Started
Before setting up, let's review Visio's architecture.
Visio consists of four main components that run simultaneously:
- React frontend, built with Vite.js
- Django server
- LiveKit server
- FastAPI server (optional, required for AI beta features)
These components rely on a few key services:
- PostgreSQL for storing data (users, rooms, recordings)
- Redis for caching and inter-service communication
- Garage for storing files (room recordings)
- Celery workers for meeting transcript (optional, required for AI beta features)
We provide two stack options for getting Visio up and running for development:
- Docker Compose stack (recommended for most users)
- Kubernetes stack powered by Tilt (Advanced)
We recommend starting with the Docker Compose option for simplicity. However, if you're comfortable with running Kubernetes locally, the advanced option mirrors the production environment and provides most of the tools required for development (e.g., hot reloading).
These instructions are for macOS or Ubuntu. For other distros, adjust as needed.
If any steps are outdated, please let us know!
We also provide GNU make utilities. To view all available Make rules, run:
$ make help
Need Help?
If you need any assistance or have questions while getting started, feel free to reach out to @lebaudantoine anytime! Antoine is available to help you onboard and guide you through the process. Chat with him @antoine.lebaud:matrix.org, or from the support hotline.
Option 1: Developing with Docker
Prerequisites
- Ensure you have a recent version of Docker and Docker Compose installed:
$ docker -v
Docker version 20.10.2, build 2291f61
$ docker compose version
Docker Compose version v2.32.4
- Install LiveKit CLI by following the instructions available in the official repository. After installation, verify that it's working:
$ lk --version
lk version 2.3.1
Project Bootstrap
- Bootstrap the project using the Make command. This will build the
appcontainer, install dependencies, run database migrations, and compile translations:
$ make bootstrap FLUSH_ARGS='--no-input'
- Access the project:
- The frontend is available at http://localhost:3000 with the default credentials:
- username: meet
- password: meet
- The Django backend is available at http://localhost:8071
Developing
- To stop the application:
$ make stop
- To restart the application:
$ make run
- For frontend development, start all backend services without the frontend container:
$ make run-backend
Then:
$ make frontend-development-install
$ make run-frontend-development
Which is equivalent to these direct npm commands:
$ cd src/frontend
$ npm i
$ npm run dev
LiveKit agents (optional)
The LiveKit agents are not started by make run. Each one runs its own
container and stays connected to LiveKit, which costs CPU and memory you
don't need unless you work on the features they power. Start them only
when you need them.
| Agent | Feature | Make command | Setting in env.d/development/common |
|---|---|---|---|
metadata-collector-dev |
Recording metadata (used to identify speakers in transcripts) | make run-agent-metadata-collector |
METADATA_COLLECTOR_ENABLED=True |
multi-user-transcriber-dev |
Live subtitles | make run-agent-multi-user-transcriber |
ROOM_SUBTITLE_ENABLED=True |
To start both at once:
$ make run-agents
Then set the matching settings to True and restart the backend so it
picks them up:
$ make run-backend
The multi-user transcriber also needs a speech-to-text provider. Configure
STT_PROVIDER and its credentials in
env.d/development/multi_user_transcriber.
Keep the settings and the agents in sync: if a setting is True while its
agent is stopped, the backend still dispatches jobs to it and the feature
fails silently.
Adding Content
You can bootstrap demo data with a single command:
$ make demo
Option 2: Developing with Kubernetes
Visio is deployed across staging, preprod, and production environments using Kubernetes (K8s). Reproducing the environment locally is crucial for developing new features or debugging.
This is facilitated by Tilt, which provides Kubernetes-like development for local environments, enabling smart rebuilds and live updates.
Getting Started
Make sure you have the following installed:
- kubectl
- helm
- helmfile
- tilt
To build and start the Kubernetes cluster using Kind:
$ make build-k8s-cluster
Once the Kubernetes cluster is ready, start the application stack locally:
$ make start-tilt-keycloak
Monitor Tilt’s progress at http://localhost:10350/. After Tilt actions finish, you can access the app at https://meet.127.0.0.1.nip.io/.