Introduction
curo: /ˈkuː.roː/, [ˈkuːroː]
- to arrange, see to, attend to, take care of, look after, ensure, tend to
- to heal, cure
- to govern, command, preside over
curo is a command-line tool for managing development environments, both on local machines as well as inside CI/CD systems. It provides a set of standard build, test, and management commands ("verbs"), such as build, test, and deploy, so you don’t need to invent your own script names or targets. Think of curo as similar to tools like Make, Just and Please, but with hints of what build tools like Bazel, Pants and all have also created through the years.
The main takeaway of curo is that it does not force a particular toolchain for the language(s) you are developing in. You set up the environment, but once you have, curo is there to make sense of the separate parts.
Why would I use curo?
There are many tools that exist to run commands and structure codebases. The philosophy behind curo is to standardize the language used when building code projectsand to reduce complexity in managing different environments.
Key Benefits
- Consistent Commands: Everyone on your team runs
curo build,curo test, etc.—no more “what do I run here?”. - Portable Configuration: All logic lives in a single
curo.tomlfile, alongside your code. And you see what the actual commands are. - No Language Lock-in: You aren’t tied to any specific toolchain; you define how commands run.
- Smooth for CI/CD: The same commands work in dev and CI without extra glue scripts.
# Build all components
curo build
# Run unit tests
curo test
# Deploy your project
curo deploy
Project configuration (in curo.toml):
[dev]
build = "go build -o bin/myapp ."
test = "go test ./..."