One command to get an isolated database for your branch.
Neo gives every git branch its own isolated Postgres, Redis, and S3-compatible storage. No Docker knowledge required. No accounts. Works offline.
neo init # Create neo.toml with latest stable versions
neo up # Start Postgres, Redis, MinIO for your branch
neo env > .env # Export connection strings
npm run dev # Develop with isolated infrastructureDownload a prebuilt binary from GitHub Releases, or build from source:
git clone https://github.com/lukewilson2002/neo.git
cd neo
bun install
bun run build # Compiles to ./neo binaryPrerequisite: Docker must be installed and running.
| Command | Description |
|---|---|
neo init |
Create neo.toml with latest stable service versions |
neo up |
Start services for current branch (idempotent) |
neo down |
Stop current environment |
neo down <name> |
Stop a specific environment by name |
neo down --all |
Stop all environments for current project |
neo env |
Print connection strings (KEY=VALUE, pipe-friendly) |
neo status |
Health checks, ports, uptime for current environment |
neo status <name> |
Same, for a specific environment |
neo list |
List all active environments for current project |
neo reset |
Destroy volumes, re-provision current environment |
neo reset --all |
Destroy all environments and volumes |
Create a neo.toml in your project root (optional, committed to repo):
[services]
postgres = "17"
redis = "7"
s3 = true
[hooks]
up = "npx prisma db push && npx prisma db seed"Without neo.toml, all three services start with latest stable versions.
Disable a service with --no-postgres, --no-redis, or --no-s3, or set it to false in the config. Pin a version with --postgres 15 or postgres = "15".
neo env outputs these for each active service:
| Variable | Format |
|---|---|
DATABASE_URL |
postgresql://postgres:postgres@localhost:<port>/neobase |
REDIS_URL |
redis://localhost:<port> |
S3_ENDPOINT |
http://localhost:<port> |
S3_CONSOLE_URL |
http://localhost:<port> |
git clone <repo-url>
cd neo
bun install
bun test # Run all tests
bun test tests/unit # Unit tests only (no Docker required)
bun run typecheck # Type checking
bun run build # Compile to binary- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing) - Write tests first, then implement
- Ensure all tests pass (
bun test) - Open a pull request