remote

A reference to a service running outside the orchestrator's control — managed cloud (AWS RDS, Upstash Redis, Qdrant Cloud), a team-shared dev environment, or anything else that's already up and just needs to be wired into the dependency graph.

Manifest knobs

[services.prod-pg]
type = "remote"
url = "postgresql://user@db.staging.internal:5432/app"
kind = "postgres"                    # optional; informs the inspector
healthcheck = { kind = "tcp", host = "db.staging.internal", port = 5432 }

remote is the only service type where the orchestrator never spawns a process. The lifecycle is just healthcheck + dependency gating.

Lifecycle

  • Install / init / start: no-op.
  • Healthcheck: whatever the manifest declares. TCP to a host is the typical shape.
  • Stop: no-op (we don't own the remote).

Inspection drawer

The inspector pulls whatever it can given the kind:

  • postgres → connection-string + table list (if reachable from the local box).
  • redisINFO keyspace + sample keys.
  • Other kinds → just the URL + healthcheck status.

$<NAME>_PORT injection

Dependents see $<NAME>_HOST + $<NAME>_PORT parsed out of the declared url, same shape as a local service. So pointing an app at staging-Postgres from a local dev session is a one-line manifest change.

Security note

The orchestrator does not redact url in logs by default. If your URL contains a password, model it via a @keychain:<name> reference:

[services.prod-pg]
type = "remote"
url = "postgresql://user:@keychain:prod_pg_password@db.staging.internal:5432/app"

The Keychain backend resolves the reference at start; the literal manifest never carries the password and the support-bundle generator redacts it.

When to use this

  • You're integrating with a production / staging service you can't run locally.
  • You want the dependency graph to show the dependency even though the orchestrator isn't responsible for the dependency's uptime.
  • A teammate's machine already runs a service the project needs and you don't want a second copy.