Coro is a platform that makes it simple to issue and manage Operators, Accounts, and Users for NATS servers.
It is distributed as a single binary but consists of modular services that can be deployed independently:
- Controller: Issues and manages Operators, Accounts, and Users.
- Broker: Facilitates messaging between the Controller and connected Operator NATS servers.
- UI: Web user interface for the Controller.
In addition to its core services, Coro provides the following tools:
pgtool: A CLI tool for initializing and managing the Coro Postgres database.proxy-agent: A Proxy Agent that connects Operator NATS servers to the Broker.
coro-demo.mov
The fastest way to get started is by running Coro in the all-in-one mode. Follow the quickstart example to run Coro using Docker Compose.
The quickstart example runs an all-in-one Coro server using flag -service=all. For a high-availability setup, you can
run the Controller, Broker, and UI services separately, allowing you to scale them independently.
See the scaling example for a simple Docker and Nginx based setup.
Refer to the configuration guide for a full list of configuration options.
After cloning the repository, install git hooks for automated code quality checks:
go tool lefthook installThis sets up pre-commit hooks that run formatting checks, linting, and tests on changed files.
An all-in-one development server can be easily started with make dev-server.
This command will:
- Launch the Coro backend and frontend in a single server
- Create a fresh Namespace that includes an Operator, Account, and User
- Start an embedded NATS server for the Operator, connected to Coro through the proxy-agent
- Set up a JetStream test Stream that publishes a message every 10 seconds