Your codebase in sync.
Automatic and in real-time.

metahead automatically synchronizes your repositories across your codebase and code hosts so dev teams can focus on engineering great software instead of fixing code. Start with as few as two repos, scale into the thousands.

No more disconnected code.
No more manual code synchronization.
No more downstream code breaks.

Thank you for your interest in metahead! We'll be in touch
Oops! Something went wrong while submitting the form.

We promise to never spam you! By submitting this form, you confirm that you acknowledge the collection and processing of personal data by metahead, as further described in the Privacy Policy.

See the impact of your code before you merge

metahead combines all your code in one metarepo so that changes are instantly propagated across the entire codebase with feedback on the impact before you merge.

A new way to store, manage, and evolve source code

Designed to combine the best elements of monorepos and multirepos, metahead empowers organizations to build software sustainably, at scale, and with high velocity.

High velocity
at scale

metarepos make large scale refactorings and changes possible. Code reuse is substantially improved, making it easier to maintain and change larger codebases.

Dependencies
under control

Easier dependency management: one synchronized version. Atomic changes to complex dependency graphs are possible.

Better 

collaboration

Flexible structure of code organization helps to prevent “silos”. There’s no need to coordinate changes across multiple repositories and code hosts, and no intermediate broken state.

Change your codebase, create transparency, and optimise workflows

metahead maximizes engineering flexibility, increases codebase transparency, and streamlines development processes. Ideal for engineering teams who want to take back control.

See the impact of your changes

Make changes atomically across repos by connecting your favourite code forge and aggregates CI results, giving you a clear view of the impact of your changes. Once you’re satisfied, you can let metahead update all relevant repos with your new code.

Publish part of your codebase

Maintaining an open-source library as part of your proprietary codebase? You can use metahead to publish and synchronise part of your code in its own public repo. Accept external contributions and check them against your internal usage of the library. You have the choice to make as much or as little as you want public, with file-granularity filters.

Reorganize your codebase with ease

Moving code to a new repository is as easy as creating a new view containing what you need. Keep the old one in sync, or use metahead to refactor it out. The choices of repos you made a long time ago don’t pin you down anymore.

Optimise your continuous integration

metahead offers a GraphQL API allowing you to query information about your codebase, such as the SHA of a subset of your files. This can be used to optimise your CI, triggering builds only when needed. You can also get rid of side effects by allowing it to check out exactly what is needed to build, and nothing more.

Simplify developer workflows

By creating views tailored to developers use-cases, you can make working with your codebase easier and faster. Only check-out what you want to see, nothing more.

Execute atomic PRs across repos and code hosts

With metahead, you can merge multiple PRs atomically. metahead acts as the source of truth, and all of the related commits will translate to one commit in the metarepo. No need to worry about the complexity of merging wide-reaching changes anymore.

Maximum efficiency for mono- and multirepo teams

metahead helps dev teams focus on building quality software instead of spending countless hours making the simplest changes.

Monorepo Teams

  • Publish part of your monorepo as an open source library
  • Split your repo in projections for improved development workflows
  • Work more efficiently by cloning only what you need, leading to faster checkouts
  • Contain your builds as CI only checks out the relevant parts

Multirepo Teams

  • Combine your repositories to benefit from the advantages of monorepos
  • Publish part of your multirepo as an open source library
  • Split your repo into projections for improved development workflows
  • See impact of your changes to the codebase before you merge
  • Propagate atomic PRs across the codebase with minimal effort
  • Refactor and reorganise with ease

See what tech leaders and software engineers have to say

Tobias

Tobias Schmid

Freelance Developer

The way metahead approaches source code management is unlike anything I have seen before. To me, metarepos are extremely promising if you want to achieve maximum control and development velocity.

Gerd

Gerd Schäfer

CTO @ esr_labs (part of Accenture Industry X)

The technology powering metahead has already helped esr_labs develop software faster and with more control. I am excited for metahead to bring this tech to the masses.

Robert

Robert Warmka

Software Engineering Lead
@ Accenture

metahead looks to be the most promising approach to combining the productivity of monorepos with the flexibility of multirepos.

Frequently Asked Questions

What is metahead?

metahead is a tool which provides a new way to store and work on code. It allows you to combine all of your code in a metarepo, which can be used to synchronize together related repositories.

How does metahead work under the hood?

metahead is powered by our open source git history transformation engine called josh. It takes full advantage of the git data model, and uses a range of techniques to achieve great performance.

What is a metarepo?

The metarepo is a repo of repos. It is where all of your repositories get synced. It can be sliced any way you want, to produce views adapted to what you need.

What is a projection?

A projection is a view of the metarepo which includes the code of a selected number of components, as well as their history. It is what metahead syncs out to the external code hosts. For example, a projection related to an application could contain the application code, as well as the libraries it uses, and the relevant history.

Is metahead metarepo a monorepo?

While it can be used like a monorepo, metahead’s metarepo is more flexible as it enables a mixed approach where code that has been synced to the metarepo can still be used as its own repository. metahead also enables the creation of synced repos on the fly, containing exactly what is required. For example, you could have one big repository per application, with the code of all libraries contained and shared between those repositories.

Can metahead be used with any codehub ?

For now, metahead works with github. We are working on adding support for more platforms.

Can I use metahead to create atomic commits across repos?

Yes, with metahead you can atomically produce commits across a range of repositories. This can be used to upgrade correlated microservices, or atomically upgrade an API used in multiple places.

Do I need to learn new tools?

No, metahead works with git. It produces views which are fully-fledged git repositories. Use all of your usual tooling for building and deploying code.

How does metahead differ from git submodules?

If you’re using git submodules, metahead can enable big improvements to your workflow. The usual loop with submodules is to make a commit in a submodule, then to update the repos containing the submodule. By replacing submodules with metahead, you can make the code truly part of all the repos using the module, and a commit to the module repository will be seamlessly synchronized to all the users of this module. With one PR, update all the repos which use this code.

When using metahead, how can I make sure my change doesn’t break the repositories it is synchronized to?

metahead triggers the CI of all your synced repositories, and collects the results in the PR you’re opening. This way, you have direct feedback on the impact of your change. When you merge, you know your change will not break any of its users.

Does metahead support access control?

Today, you can set up standard repository-level access control using github settings. We are working on ACL (Access Control Lists) support for metahead. Using the josh filtering technology, this will provide you with file-level granularity access control.

Which build tools work with metahead?

Metahead only impacts the way your code is stored and updated. It connects and triggers your Continuous Integration pipelines, but building the code can be done as before.

How does metahead handle dependencies?

metahead allows you to integrate the code of your dependencies directly in the repositories where they are used. It keeps the code in sync between all of the dependencies repositories and the users of them. 

Do I need to change the way I build code to use metahead?

It depends on the way you are currently building code. In most cases, it’s a matter of pointing to a local checkout of the dependencies rather than a remote repository.

Does metahead help with caching of CI results?

Yes! metahead provides a GraphQL API which can tell you the SHAs of any subpart of your repositories. This can be integrated in your CI to only rebuild what’s strictly necessary. What’s more, when you open a PR to a synced repository, metahead will only trigger the CI of relevant repositories which are impacted by this change.

metahead badge

A better way to store, manage, and evolve source code

Thank you for your interest in metahead! We'll be in touch
Oops! Something went wrong while submitting the form.

We promise to never spam you! By submitting this form, you confirm that you acknowledge the collection and processing of personal data by metahead, as further described in the Privacy Policy.