Three paths to a running deployment: Docker Compose for a quick start, the provisioning script for native installs, or building from source.
The fastest way to get a fully functional deployment โ all services, PostgreSQL and Redis wired together.
# Clone the repository $ git clone https://github.com/jmpsec/osctrl.git $ cd osctrl # Build and run the whole stack in Docker $ make docker_dev
Requires Docker and
Docker Compose.
The stack is defined in docker-compose-dev.yml.
https://localhost:8444
The primary operator experience.
https://localhost:8443
The server-rendered osctrl-admin interface.
The deploy/provision.sh script installs all dependencies and configures
osctrl on a recent Ubuntu LTS system โ usable for development and, with care, for production deployments.
# From a fresh Ubuntu LTS machine $ git clone https://github.com/jmpsec/osctrl.git $ cd osctrl $ ./deploy/provision.sh --help
See the native deployment documentation for full usage, flags and production guidance.
All you need is Go 1.26.3+ (and Node.js 20+ if you're working on the frontend).
$ git clone https://github.com/jmpsec/osctrl.git $ cd osctrl $ make
Compiles all components โ osctrl-tls, osctrl-admin,
osctrl-api, osctrl-cli โ into bin/,
and builds the frontend bundle. For frontend-only work: make frontend-dev.
Environments group your nodes and hold their osquery configuration, enrollment secrets and query schedules.
osctrl generates enrollment packages and one-liners per environment. Point your osquery agents at your TLS endpoint and they appear in the UI.
Run on-demand distributed queries, schedule packs, open a node console, and carve files when you need artifacts.
Full guides at osctrl.net โ deployment, components, CLI usage and API reference.
Join #osctrl in the osquery Slack, or open an issue on GitHub.