Aster discovers your existing project files (mix.exs, package.json, Cargo.toml, go.mod, …), builds one graph, and runs targets in order. You can extend it by writing aster.toml files to specify new targets and dependencies or override existing ones. Aster supports a local services runner - it lets you define a set of services to launch with one command and conventions to do this per worktree so each worktree can have it's own private environment. We also use Aster in CI to only build targets that were affected by a particular change.
Aster is a core tool we use to increase our productivity with agentic engineering. We took a lot of care in making sure agents can figure out how to use it to run tests, and the services runner lets each agent effectively operate its own environment.
I would love any feedback from this community, and really hope it helps out anyone in a similar spot to us!