Pipeline Pause Control Research
Question
How should Signet let an operator temporarily stop extraction work to free local resources without dropping queued memory capture?
Current behavior
Signet already has several pipeline-adjacent switches, but none match the operator need cleanly:
-
memory.pipelineV2.enabled = false- fully disables pipeline enqueue/start behavior
- reduces work, but new memories stop entering the extraction queue
- not a good fit for “pause now, catch up later”
-
memory.pipelineV2.shadowMode = true- still runs extraction and decision stages
- preserves observability, but does not reduce model/runtime pressure
-
memory.pipelineV2.mutationsFrozen = true- blocks writes and destructive actions
- extraction still runs, so local compute and provider pressure remain
The missing mode is operational pause:
- keep raw memory capture working
- allow pending jobs to accumulate safely
- stop worker activity so the machine gets relief
- resume later and drain backlog with existing pipeline behavior
Constraints from the current codebase
Daemon startup
packages/daemon/src/daemon.ts decides whether to start the extraction
pipeline at startup. If the pipeline does not start, Signet already falls
back to retention-only background work.
Enqueue behavior
Remember/session-end paths check pipelineV2.enabled before enqueueing
jobs. That means a pause mechanism must remain distinct from enabled
if we want backlog preservation.
Worker lifecycle
packages/daemon/src/pipeline/index.ts already exposes a clean
startPipeline() / stopPipeline() split. This is a strong fit for a
paused state because the worker graph is already centralized.
Recommended design
Add a dedicated persisted flag:
memory:
pipelineV2:
paused: true
Semantics:
-
enabled = true,paused = false- normal operation
-
enabled = true,paused = true- keep enqueue behavior
- do not start extraction workers
- surface pipeline mode as
paused
-
enabled = false- fully disabled, regardless of paused flag
This gives users a real “pause/resume” control instead of overloading
enabled or mutationsFrozen.
Recommendation for CLI behavior
Expose operator-first commands:
signet daemon pausesignet daemon resume
The CLI should:
- persist the
pausedflag in the active config file - restart the daemon so the running process picks up the new state
- report whether queued work will resume later
Restart-on-toggle is acceptable for the first implementation because the
current daemon does not hot-reload pipeline runtime state from agent.yaml.
Non-goals
- no scheduler or timed auto-resume
- no per-worker selective pause
- no change to memory retention semantics
- no dropping or reclassifying existing queued jobs