Skip to main content
Give every developer realistic data without risky exports or slow manual workflows. Basecut extracts production-like subsets of your database, following foreign key relationships to ensure referential integrity while keeping PII safe. Run locally for quick starts, or deploy agents inside your VPC for production workloads. If you are evaluating how masking works, start with the Anonymization guide.

The Problem

Testing with toy data misses real-world bugs. Edge cases that happen in production—deeply nested relationships, specific data combinations, scale-dependent behavior—never surface in development. Manually creating realistic test data is slow and breaks every time your schema evolves. Copying production data wholesale exposes PII, bloats local databases, and violates compliance requirements.

The Solution

Basecut intelligently extracts complete, referentially-valid subsets of your database:

Relationship-Aware Extraction

Start from specific rows and automatically pull all related data through foreign keys. No broken references, no manual joins.

Built-in PII Protection

30+ anonymization strategies detect and transform sensitive data. Team and Enterprise plans can enforce org-wide snapshot rules for every snapshot.

Run Locally or In Your VPC

Use the local CLI for quick starts or run agents inside your VPC. Process millions of rows without external access to your data.

Restore Anywhere

Apply snapshots to local dev, staging, or CI environments. Identical data across your entire team.

Quick Example

Extract a user’s complete account history—orders, payments, support tickets—from a production database with 200 tables:
# basecut.yml
version: '1'
name: 'user-analysis'

from:
  - table: users
    where: 'email = :email'
    params:
      email: 'john@example.com'

traverse:
  parents: 5 # Follow parent relationships (account → org)
  children: 10 # Follow child relationships (user → orders → items)

anonymize:
  mode: auto
  rules:
    '*.credit_card': { strategy: fake_credit_card }
basecut snapshot create --config basecut.yml --name "user-analysis" --source "$BASECUT_DATABASE_URL"
# ✓ Extracted 847 rows across 23 tables
# ✓ Anonymized 156 PII fields
# ✓ Snapshot stored: s3://snapshots/user-analysis

basecut snapshot restore user-analysis:latest --target "postgres://localhost/dev"
# ✓ Applied to local database in 2.3s

Choose Your Path

New to Basecut?

Get your first snapshot in under 5 minutes

Want to understand how it works?

Learn about relationship-following and FK traversal

Need to mask sensitive data?

Learn when to use auto, manual, or org-level anonymization rules

Looking for workflows?

Patterns for testing, debugging, and data sharing

Use Cases

Local Development: Pull production patterns into your dev environment. Test with real data shapes, not User 1, User 2. Team Testing: Share consistent, realistic datasets across developers. Everyone tests against the same complex scenarios. CI/CD Pipelines: Seed test databases with production-like data. Catch integration bugs before deployment. Debugging Production Issues: Extract the exact data state that triggered a bug. Reproduce locally without production access. Partner Data Sharing: Provide realistic sample data to integration partners, with all PII safely anonymized.

Get Started

Quick Start

First snapshot in under 5 minutes

How It Works

Understand the relationship-following algorithm

Configuration

Complete YAML reference with examples

Anonymization

Protect PII with 30+ strategies and extraction-time masking