Relationships
#3080 serve --remote-only: step output from workers is never persisted to the run log (history logs always empty)
Opened by randybias · 10/6/2026· Shipped 10/7/2026
Summary
With swamp serve --remote-only, step output is never written to the run's log. swamp workflow history logs <runId> --server ... returns "Log file not found or empty" for every run, and the dashboard shows no step output once the live stream ends. Operators lose all run output.
Versions
swamp serve, CLI and worker 20261003.192630.0-sha.bed0772a. Source unchanged in this respect at v20261006.152703.0-sha.5ba0b8fc.
Evidence
swamp workflow history logs <run>for any run:Log file not found or empty: .swamp/workflow-runs/<wf>/workflow-run-<id>.log.- On serve's volume, 3401 run
.logfiles exist under.swamp/workflow-runs/. The newest ones are 0 bytes. - The worker's cache dir and journal hold no method output.
Cause (read in source at bed0772a)
execution_service.ts:3027-3041opens the run log throughrunFileSink.register.run_file_sink.ts:178-190andlogger.ts:293-303accept only[HOST-1]andworkflow.runrecords that carryswampRunId.- A remote step's method logger has category
["worker","method-context"]and no runId (remote_method_context.ts:63,595). Its lines travel to serve asrunner.eventoutput events (exec_dispatch.ts:213-217) and becomemethod_output(method_execution_service.ts:458-461). From there they reach only the in-memoryRunEventBuffer(serve/run_event_buffer.ts). Nothing writes them to LogTape or to disk. DispatchResult.logs(exec_dispatch.ts:221-237) is dropped:method_execution_service.ts:920-930reads onlyoutputsandworkerName.
Expected
Serve writes each output event from a worker, and DispatchResult.logs, through the run logger at the event's level. A remote run's log then matches a local run's log, and history logs and the dashboard show it after the run ends.
Shipped
Click a lifecycle step above to view its details.
zack commented 10/7/2026, 5:46:30 PM
Thanks @randybias for reporting this! We shipped: Serve writes each output line a remote worker streams back, and the worker console capture, through the run logger so the run log of a remote step matches a local one. The write happens in MethodExecutionService executeRemotely, which workflow steps and direct model method runs share, and validates the worker-supplied event first.. The fix has been merged and a release is on its way. We appreciate your contribution to swamp.
Sign in to post a ripple.