NousResearch/hermes-agent · error

Remote connection is not ready yet. Try again in a moment.

Error message

Remote connection is not ready yet. Try again in a moment.

What it means

ValueError from _validate_workdir (cron/jobs.py:1425): the workdir resolved to an absolute path, but that path does not exist on the machine where the job store lives. Validation is eager — the failure surfaces at create/update time, not at fire time, so a scheduled job never silently runs in the wrong directory.

Source

Thrown at apps/desktop/electron/connection-apply.ts:51

  }

  commit()

  return true
}

async function resolveTerminalConnection(getTarget, ensureBackend) {
  let target = getTarget()

  if (target !== 'pending') {
    return target
  }

  await ensureBackend()
  target = getTarget()

  if (target === 'pending') {
    throw new Error('Remote connection is not ready yet. Try again in a moment.')
  }

  return target
}

export { applyConnectionChange, commitConnectionFailure, resolveTerminalConnection }

View on GitHub (pinned to c896c09c42)

Solutions

  1. Verify the path on the host that runs the cron scheduler (the gateway/backend machine, not necessarily your shell).
  2. Fix typos or recreate the directory: mkdir -p /abs/path.
  3. If the project moved, update the job with the new absolute workdir.
  4. Pass workdir=None to run the job without a pinned directory if the cwd doesn't matter.

Example fix

# before
update_job("abc123", {"workdir": "/home/me/proj"})  # dir was renamed

# after
update_job("abc123", {"workdir": "/home/me/projects/proj"})
Defensive patterns

Strategy: validation

Validate before calling

from pathlib import Path

def existing_dir(w: str) -> str:
    p = Path(w).expanduser().resolve()
    if not p.exists():
        raise FileNotFoundError(f"workdir missing on THIS host: {p}")
    return str(p)

workdir = existing_dir("/home/me/proj")  # fails fast with a clear message

Try / catch

try:
    create_job(prompt=p, schedule=s, workdir=w)
except ValueError as e:
    if "does not exist" in str(e):
        Path(w).mkdir(parents=True, exist_ok=True)  # if creation is intended
        create_job(prompt=p, schedule=s, workdir=w)

Prevention

When it happens

Trigger: create_job/update_job with workdir pointing at a deleted directory, a path that only exists on another machine, or a typo. Note the path is resolve()d first, so symlink targets are also checked for existence.

Common situations: Job created on one host whose home layout differs from the gateway host; the project directory was moved or removed after job creation and the job is then edited; remote/SSH backends where the path exists client-side only.

Related errors


AI-assisted analysis of NousResearch/hermes-agent@c896c09c42 (2026-08-14). Data as JSON: /api/errors/8a565dae6a4252b1. Report an issue: GitHub.