An open API service indexing awesome lists of open source software.

https://github.com/jmpsec/osctrl

Fast and efficient osquery management
https://github.com/jmpsec/osctrl

detection-infrastructure endpoint-security host-instrumentation incident-response infrastructure-management osquery security

Last synced: 2 months ago
JSON representation

Fast and efficient osquery management

Awesome Lists containing this project

README

          

# osctrl


osctrl


Fast and efficient osquery management.




Software License


Build Status


Go Report Card

## πŸ€” What is osctrl?

**osctrl** is a fast and efficient [osquery](https://osquery.io) management solution, implementing its [remote API](https://osquery.readthedocs.io/en/stable/deployment/remote/) as TLS endpoint.

With **osctrl** you can:

- ✨ Monitor all your systems running osquery
- πŸ“¦ Distribute its configuration fast
- πŸ“Š Collect all the status and result logs
- ⚑ Run on-demand queries
- πŸ—‚οΈ Carve files and directories
- βš™οΈ Scale from **hundreds to hundreds of thousands of nodes**

> [!WARNING]
> **osctrl** is a fast evolving project, and while it is already being used in production environments, it is still under active development. Please make sure to read the documentation and understand its current state before deploying it in a critical environment.

### πŸš€ Why osctrl?

Whether you’re running a small deployment or managing large fleets, **osctrl** gives you visibility and control over your osquery endpoints without compromising security or performance.

## πŸ‘‰ Documentation

You can find the documentation of the project in [https://osctrl.net](https://osctrl.net)

## πŸ—‚ Project Structure

```text
osctrl/
β”œβ”€β”€ cmd/ # Service and CLI entrypoints
β”‚ β”œβ”€β”€ admin/ # osctrl-admin (web UI + admin handlers/templates/static)
β”‚ β”œβ”€β”€ api/ # osctrl-api (REST API service)
β”‚ β”œβ”€β”€ cli/ # osctrl-cli (operator CLI)
β”‚ └── tls/ # osctrl-tls (osquery remote API endpoint)
β”œβ”€β”€ pkg/ # Shared application packages
β”‚ β”œβ”€β”€ auditlog/ # Audit log manager
β”‚ β”œβ”€β”€ backend/ # DB manager/bootstrap
β”‚ β”œβ”€β”€ cache/ # Redis/cache managers
β”‚ β”œβ”€β”€ carves/ # File carve logic/storage integrations
β”‚ β”œβ”€β”€ config/ # Config structs/flags/validation
β”‚ β”œβ”€β”€ environments/ # Environment management
β”‚ β”œβ”€β”€ handlers/ # Shared HTTP handlers
β”‚ β”œβ”€β”€ logging/ # Log pipeline + logger backends
β”‚ β”œβ”€β”€ nodes/ # Node state/registration/cache
β”‚ β”œβ”€β”€ queries/ # Query management/scheduling/results
β”‚ β”œβ”€β”€ settings/ # Runtime settings
β”‚ β”œβ”€β”€ tags/ # Tag management
β”‚ β”œβ”€β”€ users/ # User and permissions management
β”‚ β”œβ”€β”€ utils/ # Utility helpers
β”‚ β”œβ”€β”€ types/ # Shared type definitions
β”‚ └── version/ # Version metadata
β”œβ”€β”€ deploy/ # Deployment configs/scripts (docker/nginx/osquery/systemd, CI/CD, redis, config, helpers, etc.)
β”œβ”€β”€ tools/ # Dev/release helpers and API test assets (Bruno collections, scripts)
β”œβ”€β”€ bin/ # Built binaries (from make)
β”œβ”€β”€ docker-compose-dev.yml # Local multi-service development stack
β”œβ”€β”€ Makefile # Build/test/dev targets
└── osctrl-api.yaml # OpenAPI specification for osctrl-api
```

## πŸ› Architecture

```mermaid
flowchart LR
A["osquery Agents"] -->|TLS Remote API| T["osctrl-tls"]
O["Operators"] -->|Web UI| W["osctrl-admin"]
O -->|CLI| C["osctrl-cli"]
O -->|REST| P["osctrl-api"]

W -->|HTTP API| P
C -->|HTTP API| P

T --> S["Shared Packages (pkg/*)"]
W --> S
P --> S
C --> S
C -.->|Direct DB mode| D

S --> D["PostgreSQL Backend"]
S --> R["Redis Cache"]
S --> L["Log Destinations (DB, file, S3, Elastic, Splunk, Graylog, Kafka, Kinesis, Logstash)"]
S --> F["Carve Storage (DB, local, S3)"]
```

## πŸ›  Development

The fastest way to get started with **osctrl** development is by using [Docker](https://www.docker.com/) and [Docker Compose](https://docs.docker.com/compose/). But you can find other methods below.

### 🐳 Running osctrl with docker for development

You can use docker to run **osctrl** and all the components are defined in the `docker-compose-dev.yml` that ties all the components together, to serve a functional deployment.

Ultimately you can just execute `make docker_dev` and it will automagically build and run `osctrl` locally in docker, for development purposes.

### πŸ€– Using provisioning script

Using the provided `deploy/provision.sh` script, you can set up a development environment on your local machine. This script will install all necessary dependencies and configure the environment for **osctrl** development in a latest Ubuntu LTS system.

Check the [documentation](https://osctrl.net/deployment/natively/) for more details on how to use the provisioning script.

Ultimately the script can also be used to deploy **osctrl** in production systems, please refer to the documentation for more details.

### πŸ— Building from source

To build **osctrl** from source, ensure you have [Go](https://golang.org/dl/) installed (version 1.25 or higher is recommended). Then, clone the repository and run the following commands:

```bash
git clone https://github.com/jmpsec/osctrl.git
cd osctrl
make
```

This will compile all the **osctrl** [components](https://osctrl.net/components/) (`osctrl-tls`, `osctrl-admin`, `osctrl-api`, `osctrl-cli`), placing the binaries in the `bin/` directory.

## πŸ’¬ Slack

Find us in the #osctrl channel in the official osquery Slack community ([Request an auto-invite!](https://join.slack.com/t/osquery/shared_invite/zt-1wipcuc04-DBXmo51zYJKBu3_EP3xZPA))

## πŸ“œ License

**osctrl** is licensed under the [MIT License](https://github.com/jmpsec/osctrl/blob/master/LICENSE).

## 🧠 Security & Reporting

This is a security-sensitive project. Please read the `SECURITY.md` for vulnerability reporting and responsible disclosure guidelines.

## 🀝 Contributing

We ❀️ contributions!

Feel free to fork the repository and submit pull requests. For major changes, please open an issue first to discuss what you would like to change.