A Neosync alternative that generates the data instead of copying it

Neosync was acquired by Grow Therapy in September 2025 for its privacy-engineering team rather than the product. The GitHub repository was archived on 30 August 2025, with the final release dated 11 July 2025.

If you are reading this, you probably have a seeding step that used to work and now needs replacing. This page is meant to be useful for that, including the parts where Misata is the wrong answer.

What happened

  • ·11 July 2025: final release.
  • ·30 August 2025: repository archived.
  • ·September 2025: acquisition announced, for the team rather than continuity of the product.
  • ·The code remains available, but nobody is shipping fixes or adapters for it.

Neosync was good at what it did

Neosync was a serious piece of engineering: anonymisation, subsetting, and synthetic generation in one workflow, with real attention to referential integrity across a subset.

Its transformer model was flexible, and being able to anonymise and subset in the same pipeline solved a genuine problem well.

Two open-source test-data tools closing inside twelve months says something about the category rather than about either team. Individual developers rarely pay for seeding, and the budget that does exist sits with compliance, which wants a different product. Worth knowing when you pick the next one.

Where Misata is different

Specification first, not production first

Neosync's strongest feature was anonymising and subsetting data you already had. Misata starts from the other end: you describe the dataset and it is generated, so there is no source database to connect, subset, or de-identify.

Declared outcomes, verified independently

You can declare aggregate and cross-table facts, including exact period totals, exact group shares, ledgers that balance to the cent, and entity lifecycles where a row's status implies a legal, ordered history. A separate SQL engine then checks the emitted rows against those declarations.

A library, not a platform

Misata is a Python package with a CLI. There is no server to run and no account, which matters if what you just lost was a maintained platform.

Where Misata is the wrong answer

Neosync's anonymisation and subsetting have no direct equivalent here. If your requirement is to take a real production database and safely shrink or mask it, Misata does not do that, and you should look at a tool built for it. Misata is the right answer when you can specify the data instead of deriving it from production.

Is the data any good?

Fair question to ask of anything that generates rather than copies. There is a public benchmark: an 11-table schema with an M:N junction and a diamond dependency, checked by 110 SQL assertions that DuckDB runs against the emitted files. Misata passes 109 of 110, and the one failure is shown rather than hidden. A careful hand-written Faker script scores 70.

See every assertion

Moving over

If you used Neosync mainly to fill a development database with safe, referentially valid data, that path maps cleanly.

  1. 1pip install misata
  2. 2`misata seed --db-url ...` reads the schema from the database itself, inserts in dependency order, and verifies every foreign key afterwards.
  3. 3It plans before it writes: you see the row counts and the order first, and nothing is inserted until you agree.
  4. 4Add declarations for anything that has to hold, such as a revenue curve or a status distribution, and check them with `misata audit`.