InTouch automates itself.
A scheduled script with the same rights as one of your users.
A runtime env tool carries an InTouch Publisher credential. When it fires, the server logs in as that publisher, hands the script a short-lived session token, and logs out automatically when the tool ends. The script calls the InTouch REST API as a real publisher — with that publisher's RBAC — and never sees the password.
Four Things That Make This Work
Same rights as a user
The script's session belongs to a real publisher. Every API call is checked against that publisher's roles, project access, group memberships, and rights — the same RBAC that gates the UI.
Never sees the password
The credential's secret is read by the server, used to perform the in-process login, and discarded. The child process environment receives only the session token.
Bounded by tool lifetime
The session is created right before the script starts and logged out in a finally block. Success, failure, timeout, kill — all release the session immediately.
Fully audited
The credential's creator is server-stamped and immutable. Every API call from the script lands in the activity log, attributable to the named publisher.
Three InTouch Surfaces in One Script. No Password.
Read the activity log. Ask InTouch's own AI to triage failures. Mutate state. All under a real publisher with full RBAC and full audit. There is no equivalent of this on Zapier, Make, n8n, or Power Automate.
The script on the right is a real, runnable runtime env tool. Schedule it every 15 minutes. It reads the last day of activity, hands the failures to InTouch's own AI assistant for triage, then acts on the verdict — re-running flaky jobs, disabling jobs the AI flags as broken upstream.
Three things stack here that nobody else combines: the script reads InTouch's own activity log (RBAC-filtered), calls back into InTouch's own AI (with this publisher's tool access), and mutates InTouch's own state (every action server-stamped with creatorPublisherId). The platform is introspectable from within itself.
Swap one variable and you have staging→prod promotion: two intouch_publisher credentials (one per server), one wrapper script that walks every job in staging via /job/list and recreates the matching jobs on prod via /job/insert-base. Same 30-line pattern. No Kotlin. No CI/CD pipeline.
The platform manages itself. That is the unlock.
Self-Healing, Compliance, Cross-Server — All as Ordinary Jobs
Self-healing automation
A scheduled script that scans recent activity logs for failures, classifies them, and either restarts the failed jobs, alerts the right subscriber, or files a follow-up trigger. Pure InTouch logic — no new tools.
Compliance sweeps
Nightly scripts that diff actual server state against expected state, rotate credentials older than N days, ensure every production job has alert subscribers, generate audit reports.
Cross-instance sync
Two intouch_publisher credentials (one per server) and one Python script gives you staging→prod promotion, DR replication, or multi-region sync. No Kotlin required.
Fleet management
One script orchestrates a fleet of InTouch servers — deploy a new schedule everywhere, audit which server runs what, retire obsolete jobs in bulk. Each server keeps its own RBAC.
AI-authored automation
Describe the goal to the AI assistant. The assistant writes the script, creates the runtime env job, and wires the credential. The script is the artifact — readable, editable, version-controllable.
Domain-specific scripts
Each team writes scripts in its domain language — finance scripts for finance, ops scripts for ops. Every script operates within its publisher's RBAC, so the platform doesn't need to know anything about the domain.
Six Lifecycle Steps, Server-Managed
- You create an
intouch_publishercredential with the publisher's name and password. - You create a runtime env tool pointing at your script and attach the credential.
- Server validates the credential type at insert/update time. Mismatched types are rejected with a clear error.
- Server logs in as the publisher (in-process — no REST round trip) before the script starts.
- Server injects four environment variables into the script process:
SESSION_TOKEN,INTOUCH_SERVER,INTOUCH_PORT,INTOUCH_PUBLISHER. The password is not in the environment. - Server logs out the session in a
finallyblock when the tool ends. The token becomes invalid the moment the tool finishes — success, failure, timeout, or kill.
Any Credential, Auto-Exported as Env Vars
Runtime env tasks can attach multiple credentials at once. Each credential's values are exported into the script's environment using a tool-type convention — no manual env var plumbing.
One convention, every credential type
- An
openaicredential exportsOPENAI_API_KEY. - An
awscredential exportsAWS_ACCESS_KEY_IDandAWS_SECRET_ACCESS_KEY. - A
mysqlcredential exportsMYSQL_HOST,MYSQL_PORT,MYSQL_USER,MYSQL_PASSWORD. - A
githubtoken exportsGITHUB_TOKEN.
The pattern matches OpenClaw skills' requires.env conventions, so a skill that asks for OPENAI_API_KEY works as soon as you attach an openai credential. When a script wants non-standard names, the per-task Credential Env Var Overrides map adds aliases.
One Rotation, Every Credential Re-Encrypts
When a publisher changes their password, every intouch_publisher credential whose login matches that publisher is automatically re-encrypted with the new value. Tools using those credentials keep working without manual sync.
The Programmable Surface InTouch Already Was — Now Wired To Itself.
Every InTouch REST endpoint your publishers can call interactively is now callable from a scheduled script under the same RBAC, with the same audit trail, with the same encrypted credential vault. Available on every edition, including Personal.