Today we are releasing dotmesh and dothub - new tools that bring data into the circle of control just like code and infrastructure.

We’ve all suffered the tremendous pain that can be caused by lack of control over data - like when a change passes CI but blows up in production because you didn’t test against real data. Or getting bogged down using CI because it’s slow and flaky. Maybe even struggling to reproduce the many different databases your app relies on across dev environments.

dotmesh and dothub give you the power to capture, manage and share the state of your whole application using a git-like CLI tool and a central hub.

We’re focused on solving the problems caused in dev, test and production by the challenges of getting the right data in the right place at the right time. These problems are holding development teams back from getting features out and causing headaches for operations people when dealing with disaster recovery, backup and restore, and multi-cloud strategies. The increased adoption of cloud native computing practices is exacerbating the problem as applications change faster and employ multiple databases behind their microservices.

Bringing data into your circle of control enables exciting new workflows.

Version control and software testing lets you tame your code. Immutable infrastructure lets you tame your cloud resources, but until now data has been outside the circle of control.

Introducing dotmesh and dothub.

Our aim is to give you the same power over data that version control gives you over code and immutable infrastructure gives you over cloud resources.

dotmesh is an open source utility that lets you capture, manage and share your entire application state in units we call datadots .

is an open source utility that lets you capture, manage and share your entire application state in units we call . dothub is an online centralized repository that you can pull and push datadots to for safekeeping and collaboration.

With dotmesh you create a datadot that captures the state of all the databases, files and other state in your application. The datadot is an atomic unit you can commit, branch, push and pull. Datadots are pushed to dothub where you can share them to support your collaborative workflows. This opens up a world of new automated and team processes that benefit from a library of versioned states.

See how the dotmesh model works.

dotmesh and dothub use cases.

You can currently use dotmesh and dothub together to solve problems such as:

When an end-to-end testing pipeline fails, currently you have to stop everything and manually log into the test machines if you want to inspect the state of the ephemeral databases that were involved in the end-to-end test (if they’re even still there). With dotmesh, no more! Instead, capture all the states corresponding to a failed test in a datadot, even if it covers multiple data services, and pull it down to a dev environment to debug a problem without holding up the entire build and keeping all your colleagues waiting. Try it with Travis, Jenkins, or Gitlab. Dotmesh allows you to capture a datadot representing your application’s state. This can enable you to debug a state-related problem with someone in your team, by capturing the state of several databases in your dev environment, committing the state as a single commit, and sharing it via dothub. Try it in out: Part 1 and Part 2.

These are just two examples of what you can do with the primitives that dotmesh provides, try them out now or learn more below.