Skip to the content.

Automation (Tasker / MacroDroid)

Drive Haven from your phone’s automation apps. Haven ships a native Tasker / Locale / MacroDroid plugin action — “Run command on a Haven server” — and exposes the same capability over its local MCP HTTP endpoint for hosts that prefer raw HTTP requests.

Run command on a Haven server (plugin action)

A Locale-protocol plugin action, discoverable directly in Tasker’s and MacroDroid’s “add action → plugin” list — there’s no separate plugin APK, it’s built into Haven. Add the action, tap to configure, and set:

When the command finishes it posts a result notification (exit code + a snippet of the output).

Result variables

In wait mode the action returns the command’s output to the host as local variables, for use in later macro steps:

Variable Contents
%hstdout the command’s standard output
%hstderr the command’s standard error
%hexit the exit code (-1 if the connection failed)

The action declares these variables to the host so they appear in its variable list. Passback only happens in wait mode — a fire-and-forget host has already moved on by the time the command finishes.

Watching it run (live terminal)

Android’s background-activity-launch rules don’t let a plugin’s broadcast receiver bring an app to the foreground on its own, so “show the command in a live terminal” posts a **“Watch " notification**; tapping it foregrounds Haven, connects (or reuses) the profile's terminal, and types the command in. One tap, then you watch the output live.

Firing it as a raw intent

The action also accepts its config as flat intent extras, so it works from a generic “Send Intent” step (or adb) as well as the plugin flow — broadcast com.twofortyfouram.locale.intent.action.FIRE_SETTING to sh.haven.app/.tasker.TaskerFireReceiver with string extras sh.haven.tasker.PROFILE_ID, sh.haven.tasker.COMMAND, and boolean extras sh.haven.tasker.BLOCK, sh.haven.tasker.OVERLAY.

How it runs

The command runs over SSH through Haven’s headless exec path: it reuses a live session for the profile if one is connected, otherwise it connects headlessly. Headless connect needs a stored password or an unencrypted key — FIDO2/encrypted keys, and port-knock / SPA / tunnel-routed profiles, must be connected interactively in Haven at least once first, after which the reuse path serves them. No extra setup beyond having the SSH connection saved.

HTTP / MCP endpoint

The same “run a command on a server” capability is available over Haven’s local agent endpoint (http://127.0.0.1:8730/mcp) via the run_command tool — pair once (an approve-on-device prompt mints a token), then drive it with a single authenticated POST per action from MacroDroid’s/Tasker’s HTTP Request action. See Agent transport (MCP).


← All features