(OSAPI /ˈoʊsɑːpi/ - Oh-sah-pee) A CRUD API for managing Linux systems.
This project provides basic management capabilities to Linux systems, enabling them to be used as appliances.
| 🖥️ Node Management | Hostname, uptime, OS info, disk, memory, load |
| 🌐 Network Management | DNS read/update, ping |
| ⚙️ Command Execution | Remote exec and shell across managed hosts |
| 📊 System Facts | Agent-collected system facts — architecture, kernel, FQDN, CPUs, network interfaces, service/package manager |
| ⚡ Async Job System | NATS JetStream with KV-first architecture — broadcast, load-balanced, and label-based routing across hosts |
| 💚 Health & Metrics | Liveness, readiness, system status endpoints, Prometheus /metrics |
| 📋 Audit Logging | Structured API audit trail in NATS KV with 30-day retention and admin-only read access |
| 🔐 Auth & RBAC | JWT with fine-grained resource:verb permissions, built-in and custom roles, direct permission grants |
| 🔍 Distributed Tracing | OpenTelemetry with trace context propagation across HTTP and NATS |
| 🖥️ CLI Parity | Every API operation has a CLI equivalent with --json for scripting |
| 🏢 Multi-Tenant | Namespace isolation lets multiple deployments share a single NATS cluster |
Features | Architecture | Getting Started | API | Usage | Roadmap
| Project | Description |
|---|---|
| osapi-sdk | Go SDK for OSAPI — client library and orchestration primitives |
| osapi-orchestrator | A Go package for orchestrating operations across OSAPI-managed hosts — typed operations, chaining, conditions, and result decoding built on top of the osapi-sdk engine |
| nats-client | A Go package for connecting to and interacting with a NATS server |
| nats-server | A Go package for running an embedded NATS server |
The MIT License.

