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.
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.
- Service
notifier
Sends a message to Telegram, Discord, Slack or a signed webhook when an app starts, stops, restarts, crashes, loops, goes over its memory limit or fails a health check. Adds the notify command.
Asks for permission to
- Read app status and lifecycle events (read access only)
- Make outbound network connections; the manifest names api.telegram.org, discord.com and hooks.slack.com
- Write only to its own state directory
- Receive OXIDEPM_TELEGRAM_TOKEN from the daemon's environment
Built and tested, not published yet: there is no archive to download and no signed index. Once there is one, import it from an archive pinned by its SHA-256.
- Service
exporter-prometheus
Serves /metrics in the Prometheus text format on 127.0.0.1:9616. On each scrape it asks the daemon for the status of the apps, and answers 503 with oxidepm_up 0 when it cannot.
Asks for permission to
- Read app status (read access only)
- Make outbound network connections (no hosts named)
- Listen on 127.0.0.1:9616
- Read its own state directory, write nothing
Built and tested, not published yet: there is no archive to download and no signed index. Once there is one, import it from an archive pinned by its SHA-256.
- Planned: web commandComing later
ui-web
The Web API and its WebSocket, which today are the oxidepm web command in the core.
Permissions
- Shown when the adapter is released
- Planned: monit commandComing later
ui-tui
The terminal dashboard, which today is the oxidepm monit command in the core.
Permissions
- Shown when the adapter is released
- Planned: runtimeComing later
runtime-node
Runs Node.js apps (node, npm, pnpm, yarn). Today these runtimes are built into the core.
Permissions
- Shown when the adapter is released
- Planned: runtimeComing later
runtime-python
Runs Python apps. Today this runtime is built into the core.
Permissions
- Shown when the adapter is released
- Planned: runtimeComing later
runtime-go
Runs Go apps. Today this runtime is built into the core.
Permissions
- Shown when the adapter is released
- Planned: runtimeComing later
runtime-rust
Runs Rust and Cargo projects. Today these runtimes are built into the core.
Permissions
- Shown when the adapter is released
- Planned: check commandComing later
check
Project preflight checks, which today are the oxidepm check command in the core.
Permissions
- Shown when the adapter is released
- Planned: init commandComing later
init
Scans a project and writes a starter config file, which today is the oxidepm init command in the core.
Permissions
- Shown when the adapter is released
- Planned: start from gitComing later
git-start
Clones a repository and starts it, which today is oxidepm start --git in the core.
Permissions
- Shown when the adapter is released
- Planned: deploy and diffComing later
deploy
Deploys over SSH and shows remote changes, which today are the deploy and diff commands in the core.
Permissions
- Shown when the adapter is released
- Planned: file watchingComing later
watch-rebuild
Restarts an app when its files change. File watching is not available in the core today: --watch is refused, and the message points here. Planned, not built.
Permissions
- Shown when the adapter is released
- Planned: AIComing later
AI adapters
A plan, with no code behind it yet: adapters that would let AI agents work with OxidePM, held to the limits described on the security page.
Permissions
- Not decided yet
No adapter matches “”.
If it doesn’t exist yet, you can write it.
Names, and what an adapter that is not built will ask for, are plans and can change.
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.
{
"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
}
}