🫀 Autonomous Pulse ​
Suitcase can wake up periodically, evaluate your career context, and decide whether to take action — all without bothering you.
What the Pulse Does ​
The pulse is a periodic wake-up cycle, not a notification system. On each pulse, Suitcase:
- Checks its own health (API, LLM, service status)
- Evaluates your career context (leads, reflections, strategy)
- Chooses the highest-priority safe action
- Produces a durable artifact recording what it considered and what it chose
By default, the pulse does not message you. It works quietly in the background, producing reflections, triaging leads, updating strategy notes, and proposing improvements — all inside suitcase_world/pulse/.
Configuration ​
Edit suitcase_world/config/pulse.json:
{
"enabled": true,
"cadence": "daily",
"allowed_actions": {
"reflect": true,
"lead_triage": true,
"strategy_update": true,
"patch_proposal": true,
"creative_project": true,
"user_message": false
},
"quiet_hours": null,
"min_hours_between_user_messages": 24,
"max_actions_per_pulse": 1
}Cadence Values ​
| Value | Fires every |
|---|---|
off | Never |
every_2_hours | 2 hours |
every_4_hours | 4 hours |
every_8_hours | 8 hours |
daily | 24 hours |
every_3_days | 3 days |
weekly | 7 days |
Allowed Actions ​
| Action | What it does |
|---|---|
reflect | Writes a reflection under suitcase_world/reflections/ |
lead_triage | Checks for untriaged job leads and creates a triage plan |
strategy_update | Creates a strategy snapshot with observations and suggestions |
patch_proposal | Proposes a system improvement as a patch request |
creative_project | Reserved for future creative work |
user_message | Disabled by default. If enabled, Suitcase may message you — but only with concrete, high-value reasons, and at most once every min_hours_between_user_messages hours. |
Installation ​
The pulse runs via a systemd timer that fires hourly. The pulse script enforces your configured cadence — if the timer fires but the cadence hasn't elapsed, it exits cleanly as a no-op.
# Install the timer (requires sudo)
sudo bash scripts/install_suitcase_pulse.shThis:
- Installs
suitcase-pulse.serviceandsuitcase-pulse.timer - Enables the timer to start on boot
- Starts the timer immediately
Manual Usage ​
# Run once (ignores cadence — fires immediately)
python scripts/suitcase_pulse.py --once
# Dry run — evaluate but don't execute
python scripts/suitcase_pulse.py --dry-run
# Force a specific action
python scripts/suitcase_pulse.py --force-action reflect
# Check timer status
systemctl status suitcase-pulse.timer
# View pulse service logs
journalctl -u suitcase-pulse.service -n 100 --no-pagerViewing Pulse State ​
# Latest pulse result
cat suitcase_world/pulse/latest.json
# Full event log
cat suitcase_world/pulse/events.jsonlSafety ​
- The pulse cannot modify source code, configuration, or runtime files
- The pulse cannot write outside
suitcase_world/ - The pulse cannot submit job applications or contact people
- The pulse cannot send messages by default (
user_message: false) - All patch ideas go through patch request artifacts for the dreaming cycle to review
- Max one substantive action per pulse by default
Enabling via Web UI ​
During setup, you'll see a card asking if you want to enable the autonomous pulse. If you say yes, you'll get installation instructions — the web UI cannot install systemd timers (that requires root), but it will show you exactly what to run.