Principle:Helicone Helicone Prerequisites Installation
| Knowledge Sources | |
|---|---|
| Domains | Local Development, Prerequisites |
| Last Updated | 2026-02-14 00:00 GMT |
Overview
Prerequisites installation is the process of ensuring all required runtime environments and tools are available on a developer's machine before starting the Helicone platform locally.
Description
Helicone is a monorepo with multiple services written in different languages and frameworks. To develop locally, a developer needs:
- Node.js >= 20: Required by both the root monorepo (
package.jsonengines field) and the web frontend (web/package.jsonengines field). Node 22 is the recommended version per project documentation. - Python 3: Needed for running ClickHouse database migrations via the
ch_hcone.pyCLI tool, which requires thetabulateandyarlpip packages. - Docker: The entire infrastructure stack (PostgreSQL, ClickHouse, MinIO, Redis, Mailhog) runs inside Docker containers managed by Docker Compose.
- Yarn: The monorepo uses Yarn workspaces for dependency management across all JavaScript/TypeScript packages.
Without these prerequisites correctly installed and on the system PATH, subsequent setup steps (infrastructure startup, migrations, service startup) will fail.
Usage
Use this principle at the very start of onboarding to a Helicone development environment, before cloning the repository or running any setup commands. It applies to all developers regardless of which service (web, jawn, worker) they intend to work on.
Theoretical Basis
Modern full-stack platforms typically require multiple language runtimes. The Node Version Manager (NVM) pattern allows developers to maintain multiple Node.js versions side by side, preventing conflicts between projects with different engine requirements. Python virtual environments (venv) serve the same purpose for Python tooling. Docker provides reproducible infrastructure without requiring developers to install databases natively.
The monorepo engines field in package.json enforces a minimum Node.js version at install time:
{
"engines": {
"node": ">=20"
}
}
This constraint is defined in both package.json (root) and web/package.json.