Using Modem

Jobs & delegation

Hand over a task, close the laptop, collect the result.

Starting one

$ modem run "fix the failing billing tests"
  ✓ job started

The prompt returns immediately; detaching is the default, not an option. The computer stays awake for as long as the job is working, then suspends on its own.

Options

FlagEffect
--agent claude|codexWhich agent runs it. Default claude.
--in <folder>Run inside that folder of the computer.
--timeout 45mHard limit. Default 30 minutes, maximum 4 hours.
--shellRun the string as a plain shell command, no agent.
-fFollow the output immediately instead of detaching.

Following and stopping

$ modem              # is anything running?
$ modem logs -f      # follow the current job
$ modem stop         # end it, keep what it produced

Logs are kept on the computer's disk, so you can read a job's output long after it finished.

The timeout is not advisory

Every job is killed at its limit, SIGTERM, then SIGKILL ten seconds later: and marked timed_out. There is no way to start a job without one. An agent that loops cannot run all night, and cannot quietly spend your hours.

Writing a good instruction

A job runs alone, so the instruction has to carry everything the agent would otherwise ask you. In practice:

  • Say where. --in project, or name the folder in the sentence.
  • Say what "done" means. Tests pass, a file exists, a branch is pushed.
  • Ask for an artefact. A report file is easier to collect than a conversation.
  • Bound the scope. One task per job; chain jobs rather than writing an epic.
$ modem run --in billing-api --timeout 45m \
    "make the failing tests pass, then write what you changed to REPORT.md"

Beyond code

Nothing about a job is code-specific. Push a folder of documents and ask for analysis; the result is a file you pull back.

$ modem push ./leases
$ modem run --in leases "compare these three leases, list the risky clauses in RISKS.md"
$ modem pull leases/RISKS.md

Recurring missions, every morning, do this, are the next feature: the trigger has to live in the cloud, so your laptop stays shut. See the roadmap.