This project uses Dev Containers for development. The dev container includes all required dependencies and tools.
- Docker (or OrbStack for macOS, recommended)
- VS Code with Dev Containers extension
- mkcert for local SSL certificates
Required SaaS services (community contributors need to register these before running the setup):
| Service | Purpose | Tokens needed | Dashboard |
|---|---|---|---|
| Clerk | User authentication and session management | CLERK_SECRET_KEY, CLERK_PUBLISHABLE_KEY |
dashboard.clerk.com |
| E2B | Cloud sandbox runtime for executing agent code | E2B_API_KEY |
e2b.dev/dashboard |
| Cloudflare R2 | Object storage for user files and artifacts | R2_ACCOUNT_ID, R2_ACCESS_KEY_ID, R2_SECRET_ACCESS_KEY, R2_USER_STORAGES_BUCKET_NAME |
dash.cloudflare.com |
| Slack API | Slack app integration for notifications and commands | SLACK_CLIENT_ID, SLACK_CLIENT_SECRET, SLACK_SIGNING_SECRET |
api.slack.com/apps |
Before opening the project in VS Code, you need to set up SSL certificates and hosts on your host machine (the machine running Docker, not inside the container).
macOS:
brew install mkcertLinux:
# Debian/Ubuntu
sudo apt install mkcert
# Arch Linux
sudo pacman -S mkcertRun the certificate generation script from the project root on your host machine:
cd /path/to/vm0
bash scripts/generate-certs.shThis script uses mkcert to create locally-trusted SSL certificates for development.
- Fork and clone the repository
- Open VS Code and run
Dev Containers: Open Workspace in Containerfrom the command palette - Select the
vm0.code-workspacefile in the project root - The container will build and set up the development environment automatically
- Initialize git hooks:
lefthook install
Run the sync script to populate environment variables from .env.local.tpl templates:
scripts/sync-env.shThe script will ask if you have 1Password access:
- VM0 team members: Choose yes to auto-sync from 1Password
- Community contributors: Choose no to enter values interactively (only missing values are prompted)
SECRETS_ENCRYPTION_KEY is auto-generated if you press Enter when prompted.
To run the web application locally with HTTPS:
-
Ensure SSL certificates and hosts are configured (see SSL Certificates and Hosts Configuration above)
-
Start the dev server (inside dev container):
bash scripts/prepare.sh && cd turbo && pnpm dev
-
Access the application: Open https://vm7.ai:8443/ in your browser.
Run tests inside the dev container:
cd turbo && pnpm install && pnpm test- Create a new branch from
main - Make your changes
- Commit your changes following Conventional Commits format
- Push your branch and create a pull request