forkstack
Instant, isolated development environments using zero-copy database and storage forks.
forkstack is a CLI tool for creating fully isolated development environments in seconds. Each developer gets their own copy of your entire stack—database and object storage—without duplicating data or slowing down.
Installation
# Recommended: install script
curl -LsSf https://forkstack.xyz/install.sh | sh
# Or with pip/uv
pip install forkstack
uv pip install forkstack
# Or with cargo
cargo install forkstack --bin forks
Why forkstack?
Traditional development environments share databases or require expensive duplication:
- ❌ Shared dev DB: Developers step on each other's data
- ❌ DB per developer: Expensive, slow to provision, hard to keep in sync
- ❌ Local-only: Can't test with production-like data
forkstack gives you the best of all worlds:
- ✅ Instant creation: New environments in seconds, not minutes
- ✅ Zero cost: Fork-on-write means no data duplication charges
- ✅ Full isolation: Each environment has its own DB and storage
- ✅ Production parity: Fork from production to test with real data
- ✅ Easy cleanup: Delete environments instantly when done
Quick Start
1. Create a config file
Create .forkstack.toml in your project:
[database]
provider = "turso"
organization = "your-org"
production = "my-app-prod"
[storage.uploads]
provider = "tigris"
bucket = "my-app-uploads"
endpoint = "https://fly.storage.tigris.dev"
2. Set credentials
export TURSO_API_TOKEN="your-token"
export AWS_ACCESS_KEY_ID="your-key"
export AWS_SECRET_ACCESS_KEY="your-secret"
3. Create a fork
$ forks create -n alice
Created fork: alice
Database: libsql://alice-your-org.turso.io
Storage: uploads: s3://my-app-uploads/forks/alice/
4. Use your fork
Point your app at the fork URLs, work in isolation, then clean up:
$ forks delete alice
Deleted fork: alice
CLI Reference
forks create # Create fork with random name
forks create -n alice # Create fork with specific name
forks list # List all forks
forks delete alice # Delete a fork
How It Works
forks create
│
├── Turso API: Create database branch
│ └── Zero-copy fork from production DB
│
└── S3 API: Copy objects to fork prefix
└── Full copy (or use Tigris bucket forks)
Database branching uses Turso's native branching—instant, zero-copy regardless of database size.
Storage forking copies objects to a fork-specific prefix. For zero-copy storage, use Tigris bucket forks.
Supported Services
Databases (pick one):
- Turso - SQLite branches (recommended)
- More coming soon (Neon, PlanetScale)
Object Storage (pick one):
- Tigris - S3-compatible with bucket forks (recommended)
- Any S3-compatible storage
Pattern Benefits
For Individual Developers
- Test risky changes in isolation
- Work on multiple features simultaneously
- Fork from prod to debug with real data
- Clean up experiments instantly
For Teams
- No database conflicts between developers
- Easy code review with deployable branches
- Staging environments on-demand
- Safe production debugging
For CI/CD
- Ephemeral preview environments per PR
- Cost-effective testing at scale
- Automatic cleanup after merge
Documentation
Full documentation at forkstack.xyz
Contributing
Contributions welcome! Submit issues and PRs at github.com/russellromney/forkstack
License
Apache 2.0 - Use it however you want.
Metadata
Release files for forkstack 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| forkstack-0.1.0.tar.gz | 30.1 kB | Without provenance | Details for forkstack-0.1.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| forkstack-0.1.0-py3-none-macosx_11_0_arm64.whl | Python 3 | none | macOS 11.0+ ARM64 | Details for forkstack-0.1.0-py3-none-macosx_11_0_arm64.whl |
Total release size: 6.7 MB
Release files / forkstack-0.1.0.tar.gz
| Download URL | forkstack-0.1.0.tar.gz |
|---|---|
| Size | 30.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
36b70342e55828397bfb59962260f793193be511e63d99b57ca5ab339b2bd879
|
|
BLAKE2b-256 checksum How to use checksums |
2f4b385ef3bb360c66ea87f6c070f26ba3d0897d1180682038107d2f67bfa914
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.10.2
|
Release files / forkstack-0.1.0-py3-none-macosx_11_0_arm64.whl
| Download URL | forkstack-0.1.0-py3-none-macosx_11_0_arm64.whl |
|---|---|
| Size | 6.6 MB |
| Tags | Python 3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
8649088a4eebf0469387c98300d6109801efef25dfe1c7846413e8e5375fa13f
|
|
BLAKE2b-256 checksum How to use checksums |
062e2ca5fa3eb81ab540279a36ecd0efdd80dad6b1de11080f8f92d14bf22da8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.10.2
|
Security for forkstack 0.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.