Runtime Connector Catalog

August 6, 2026 ยท View on GitHub

Status: public-safe v0 catalog for LoopX host/runtime connectors.

LoopX can run beside many execution surfaces without becoming the execution runtime. The connector catalog names those surfaces in user-facing terms and maps each one back to the same kernel contracts: registry, active state, todo, quota, scheduler hints, gates, evidence, and public/private boundary.

The catalog is not a second source of truth. It is a frontstage index over the host loops that can wake an agent, ask LoopX whether work is allowed, write back validated state, and expose enough liveness for users and maintainers to reason about the work.

Connector Fields

FieldMeaning
idStable connector id used by docs, status projections, and smokes.
surfaceUser-visible host surface or runtime family.
execution_modeHow the host loop runs: visible TUI, app heartbeat, local scheduler, webhook, or bridge.
wake_triggersWhat starts one LoopX-controlled turn.
state_writebackThe LoopX write path after validated work.
liveness_signalMinimal signal that the host loop is alive without copying raw logs.
stop_reset_policyHow scheduler hints, final checks, or host stop rules apply.
budget_meterHow the connector maps work to quota or no-spend monitor policy.
human_visibilityWhat the user can see without reading private state.
boundaryWhat the connector must not copy, infer, or mutate.
smoke_expectationFocused public check that protects the connector contract.

Initial Catalog

idsurfaceexecution_modewake_triggersstate_writebackliveness_signalstop_reset_policybudget_meterhuman_visibilityboundarysmoke_expectation
codex_app_heartbeatCodex App automationScheduled headless app threadCodex App heartbeat RRULE; scheduler_hint.reset_policy.reset_tokentodo lifecycle, refresh-state, then quota spend-slot after validationHeartbeat run plus quota eventApply scheduler_hint.codex_app reset/backoff; cadence-only changes do not spendPer-goal/per-agent quota slot after validated writebackVisible thread, heartbeat XML, concrete user todo when requiredGenerated heartbeat prompt; scoped --agent-id; no project-specific prompt branchesPrompt smoke covers scheduler hint, reset token, identity, and no-spend cadence change.
codex_app_ssh_goalCodex App connected to a remote workspace over SSHVisible interactive Goal loopHost /goal continuation; no automation-tool dependencySame CLI todo/refresh/spend path, with --source visible-goal after validationVisible Goal state plus compact LoopX statusComplete only on terminal no-follow-up; after three unchanged blocked turns, native update_goal(status=blocked) stops host continuation while LoopX remains active; user /goal resume reactivates itQuota slot after validated writeback; no spend for gates, waits, final checks, or host blockingUser sees the active Codex task and its concrete gate or next actionGenerated body stays within the /goal 4000-character limit and never invents LOOPX_TURN or calls automation_updateAgent-onboard smoke proves exact host selection, typed scheduler context, body budget, bounded quiet stop, and absence of heartbeat-only instructions.
codex_cli_tuiCodex CLI TUIVisible interactive terminal loopUser bootstrap, /goal, or visible continuationSame CLI todo/refresh/spend pathTUI transcript plus compact LoopX statusUses the same native update_goal(status=blocked) and /goal resume contract after the typed unchanged limitQuota slot after validated writeback; no spend for blocked/final-check transitionsUser sees the active TUI turnDo not silently switch to hidden headless execution or copy raw transcriptsTUI prompt/bootstrap smoke covers scoped identity and native blocked/resume semantics.
claude_code_loopClaude Code loopVisible local agent loopSlash command, local loop tick, or host loop continuationSame CLI todo/refresh/spend pathLoop status plus compact transcript pointerFinal quota/replan check before stop when unchanged limit is configuredQuota slot after validated writeback; no spend for stop/final checkUser sees local loop status and responseNo private material, credentials, production action, or hidden approval bypassLoop smoke covers scoped identity, unchanged final check, and stop-without-spend.
opencode_goal_loopOpenCode goal modeVisible OpenCode goal plugin loop gated by LoopX/loopx <task> with the opt-in OpenCode goal bridge installedSame CLI todo/refresh/spend path through the bridgeBridge status plus compact LoopX statusFinal quota/replan check before loop stop when unchanged limit is configuredQuota slot after validated writeback; no spend for stop/final checkUser sees the OpenCode goal turn and bridge statusBridge install stays opt-in; do not copy raw transcripts, credentials, or local session pathsOpenCode bridge tests and host-mode selector smoke cover scoped identity and catalog parity.
pi_goal_loopPi goal modeVisible Pi goal extension loop gated by LoopX/loopx <task> with the opt-in Pi goal extension installedSame CLI todo/refresh/spend path through the extensionExtension status plus compact LoopX statusFinal quota/replan check before loop stop when unchanged limit is configuredQuota slot after validated writeback; no spend for stop/final checkUser sees the Pi goal turn and extension statusExtension install stays opt-in; bindings stay under the project .loopx/ tree; do not copy raw transcripts, credentials, or local session pathsPi extension source-contract tests and host-mode selector smoke cover scoped identity and catalog parity.
shell_workerShell, cron, launchd, or service timerHeadless local commandCron/service/manual shell wakeupCLI writeback commands from the project checkoutExit code, run id, and compact statusObey local scheduler_hint backoff/reset; fail closed on missing goal or agent idQuota slot for delivery; monitor-only polls stay no-spendLogs or status command, not raw state filesDo not bake local paths, secrets, or project policy into reusable scriptsCommand examples use global registry, --agent-id, and no-spend monitor behavior.
http_webhookHTTP webhook or local daemonRequest-driven bridgeLoopback callback, webhook, or host eventAdapter validates, then emits LoopX todo/gate/evidence eventsRequest log plus compact status exportWebhooks do not self-poll; scheduler hints are advisory unless a scheduler owns the retryQuota spend only after accepted writebackDashboard/status feedLoopback by default; write endpoints require explicit dry-run/preview and CLI-equivalent fallbackLoopback smoke rejects remote status/write authority and proves preview-gated writes.
worker_bridgeWorker bridgeExternal executor, task container, or remote worker bridgeWorker event, bridge message, or runner sidecarBridge emits compact public-safe state, todo, evidence, or benchmark-run payloadWorker heartbeat/status and compact counter traceHost-specific stop/reset maps back to scheduler hints and outcome policyQuota event for accepted work; no leaderboard/score claim from bridge-only evidenceDashboard/frontstage projection and compact evidence timelineStrip raw logs, local paths, private traces, task text, and credentialsWorker bridge install/status smoke proves source mount, writeback contract, and private-boundary stripping.
computer_use_runtimeBrowser, desktop, or app automation runtimeVisible or replayable UI execution surfaceApproved connector plan, bounded todo, host replay event, or user takeover handoffCompact action plan, observation, receipt, gate, and evidence-handle writebackHost-owned replay/screenshot pointer plus compact receipt fieldsStop at unknown modal, privacy ambiguity, or final external action; scheduler hints still come from LoopX quotaQuota spend only after validated receipt and LoopX writeback; readiness/profile checks stay no-spendReview card with intended action, forbidden actions, evidence handle, and takeover pathDo not copy credentials, cookies, raw screenshots, private UI bodies, or perform sends/purchases/production mutations without exact gateSynthetic capability/action/receipt smokes prove gate-before-write, raw-evidence stripping, and concrete user-question projection.
loopx_turnLoopX Turn host adapterIsolated headless bounded executionloopx host-mode-plan selects the mode, then loopx turn plan previews one typed decisionloopx turn run-once --execute writes back only after independent validationCompact Turn receipt and scheduler execution contextOuter controller obeys scheduler hints; cadence-only/preview work stays no-spendQuota slot only after validated writebackOperator sees selected host, execution mode, validator requirement, and next preview commandDo not publish opaque session handles, raw transcripts, local paths, credentials, or host-local logsHost-mode-plan smoke proves host-mode selection, scoped identity, Turn mapping, and visible/headless/hybrid handoff readiness.

Reusable shell_worker reference

scripts/external_scheduler_worker.py is a scheduler-hint-aware shell_worker for generic visible CLI loops (for example TraeX). Each tick runs quota should-run --include-detail scheduler, projects a one-line public-safe status (waiting/should_run/terminal, cadence class, next check minutes, unchanged count), and sleeps per the local_scheduler progression ladder. It tracks the consecutive-unchanged index in a small state file and resets it when scheduler_hint.reset_policy.reset_token changes. It is observe-only by default; pass --wake-cmd only to trigger a bounded headless turn (for example loopx turn run-once ... --execute). It cannot type into a visible TUI, so it does not replace the interactive host loop. A launchd template ships at examples/external-scheduler-worker.launchd.plist and the contract is guarded by examples/external-scheduler-worker-smoke.py.

External Tool Extension Candidates

An MCP server can play two different roles around LoopX:

  • a LoopX host adapter exposes LoopX lifecycle reads and controlled writes to an MCP-capable host;
  • an external tool extension exposes another product's tools to the host and remains a replaceable provider behind a LoopX outcome capability.

The entries below are discovery notes, not availability claims. Cataloging an extension does not add a LoopX feature, advertise an available capability, or grant credentials, network access, private reads, or external-write authority.

idupstream surfacestatuspossible LoopX bindingboundary before integrationpromotion evidence
official_xmcpX Developer Platform XMCP and official MCP documentationcatalogued_not_integrated; no LoopX install check or live qualificationOptional MCP provider for the existing content-ops / social_browser_x outcome path; not a new capability and not a replacement control planeHost owns OAuth material and X API cost/rate limits. Start with an explicit read-only tool allowlist. Posting, replies, likes, follows, DMs, account changes, paid queries, and private expansion require exact LoopX gates. Do not project raw posts, timelines, DMs, tokens, or MCP payloads into public state.Provider-neutral operation map; credential-free install/readiness check; metadata-only public-read packet; exact write/private/cost gate plan; compact receipt; focused contract smoke. Live X E2E is a later owner-authorized qualification, not required for catalog status.

XMCP is an official local MCP server that derives more than 200 tools from the X API OpenAPI specification at startup. Its upstream allowlist is therefore a security and cost boundary, not only an output-budget optimization. A LoopX adapter should expose a small operation profile such as public account lookup and bounded recent search instead of forwarding the complete generated tool surface. Streaming and webhook endpoints are outside XMCP's request/response surface; durable monitoring still needs a separate host scheduler or event connector governed by normal LoopX monitor contracts.

X also hosts a documentation-only MCP at https://docs.x.com/mcp. That server may help an implementation agent inspect current X API documentation, but it does not provide social-source evidence and must not be reported as social_browser_x runtime readiness.

Promote an extension candidate to a capability path only when the user outcome, provider-neutral packet, CLI entrypoint, gate model, and focused smoke are all stable. Until then, the extension remains interchangeable infrastructure behind an existing capability.

Projection Rules

  • LoopX kernel objects remain authoritative: registry, active goal state, todo, run history, quota ledger, gates, and evidence pointers.
  • A connector may project host facts into status or dashboard cards, but it must not store raw transcripts, raw logs, credentials, local absolute paths, or private artifacts in public state.
  • Every delivery turn starts with quota should-run scoped by goal_id and registered agent_id.
  • Cadence updates, reset-token handling, final quota checks, loop exits, and monitor-only polls do not spend delivery quota.
  • User gates must surface concrete user todos or questions. If the payload is missing, the connector reports a projection bug instead of silently waiting.
  • Validated delivery ends with durable writeback before quota spend: todo/state/evidence update, refresh-state, and one quota spend event.

Smoke Expectations

Connector smokes should stay narrow. They protect reusable contracts, not one maintainer's local automation:

  • prompt and bootstrap smokes cover scoped identity, scheduler_hint, reset policy, and no-spend cadence or final-check behavior;
  • local status/server smokes cover loopback-only defaults, read-only browser projection, and explicit dry-run/preview before writes;
  • bridge smokes cover compact writeback payloads, liveness counters, and private-boundary stripping;
  • todo/writeback smokes cover the validated-work sequence and prove monitor-only or stop-only paths do not spend quota.