Sitelet https://github.com/osapi-io
Skip to content
@osapi-io

osapi

A CRUD API for managing Linux systems.

osapi-io

A Linux system management API with async job processing over NATS JetStream.

documentation release ghcr.io go linux license

Work reaches a host by being queued, not by being called.

What this is

OSAPI makes a Linux host behave like an appliance. One binary and a config file give you a REST API, a CLI, a Go SDK and an embedded dashboard over hostname, DNS, disk, memory, load, packages, services, users, sysctl, cron, certificates, containers, files and command execution, across a fleet rather than one box.

CLI / SDK / UI  ->  Controller (REST API)  ->  NATS JetStream  ->  Agents

The controller never touches the operating system. It writes a job and waits. An agent on the managed host picks the job up and a provider does the work. Delivery is at-least-once, so every provider has to be safe to run twice, and that constraint is what the rest of the design is built around.

Target one host by name, broadcast to the whole fleet, load-balance across any free agent, or route by label.

Repositories

Project Release Stars Description
osapi release stars The controller, the agent, the CLI, the SDK and the embedded dashboard
osapi-orchestrator release stars Runs multi-step operations across OSAPI-managed hosts
gohai release stars Collects system facts, in the spirit of Chef Ohai
nats-client release stars Connects to NATS and JetStream
nats-server release stars Runs a NATS server inside a Go process
osapi-justfiles release stars The just recipes every repository here imports
specs release stars The design docs, written before the code

Start with osapi. Everything else is either something it imports or something that reads it.

How the work is done

Design first. A change starts as a page in specs, gets built, and then the page is corrected wherever building proved it wrong. It is the same page all three times, so nothing is converted from one form into another, and the design and the documentation cannot drift apart.

Try it

# run the controller, the agent and NATS together
osapi start

# ask one host its hostname
osapi client node hostname --target web-01

# ask every host for its users
osapi client node user list --target _all

# open the dashboard
open http://localhost:8080

Documentation | API reference | Contributing | Security | Code of conduct | AI policy

Popular repositories Loading

  1. osapi osapi Public

    A Linux system management API with async job processing over NATS JetStream.

    Go 3 1

  2. gohai gohai Public

    A Go-based system fact collector inspired by Chef Ohai.

    Go 1

  3. nats-server nats-server Public

    A Go package for running an embedded NATS server.

    Go

  4. nats-client nats-client Public

    A Go package for connecting to and interacting with a NATS server.

    Go

  5. osapi-justfiles osapi-justfiles Public

    Shared justfiles for osapi-io projects.

    Just

  6. osapi-orchestrator osapi-orchestrator Public

    A Go package for orchestrating operations across OSAPI-managed hosts.

    Go

Repositories

Showing 8 of 8 repositories

People

This organization has no public members. You must be a member to see who’s a part of this organization.

Top languages

Loading…

Most used topics

Loading…