Adapters

The core supervises processes. Features that are not part of that job are adapters you choose to install. Each adapter is a separate program, and you approve what it asks for before it runs.

$ oxidepm adapter import <archive> --sha256 <hex>
$ oxidepm adapter enable <name>
$ oxidepm adapter list
Not in the latest release (0.3.2)

The install command installs 0.3.2, the latest published release. The agent socket, audit log, dry runs, policy markers and adapters described on this site are not in that release, and the code that has them is not published yet. These pages describe what is coming. What 0.3.2 has and does not have.

Two adapters are built and tested: the notifier and the Prometheus exporter. Neither is published yet: there is no archive to download and no signed index. The index that oxidepm adapter import <name> and adapter search read does not exist yet either, so once an archive is published you import it and pin it with its SHA-256. How importing works.

14 adapters

Names, and what an adapter that is not built will ask for, are plans and can change.

Write your own

Any language that can read and write JSON

An adapter is a program that speaks the adapter protocol over its standard input and output. The protocol is documented and versioned. A manifest.json declares what the adapter asks for, and the person who enables it sees that list first.

If your adapter crashes or stops answering, the daemon restarts it with a growing delay. The apps the daemon supervises are not touched.

Read the adapter protocol The manifest file
manifest.jsonexporter-prometheus, abridged
{
  "schema": 1,
  "name": "exporter-prometheus",
  "version": "0.1.0",
  "kind": "service",
  "summary": "Prometheus metrics for the apps OxidePM manages.",
  "protocol": [1],
  "min_daemon": "0.1.0",
  "exec": "oxidepm-exporter-prometheus",
  "permissions": {
    "host": {"level": "read", "scope": "all"},
    "network": {"mode": "outbound", "hosts": [], "listen": ["127.0.0.1:9616"]},
    "fs": {"read": ["$STATE"], "write": []},
    "spawn": {"mode": "none"},
    "memory_mb": 64
  }
}