Skip to content

🫀 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:

  1. Checks its own health (API, LLM, service status)
  2. Evaluates your career context (leads, reflections, strategy)
  3. Chooses the highest-priority safe action
  4. 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:

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 ​

ValueFires every
offNever
every_2_hours2 hours
every_4_hours4 hours
every_8_hours8 hours
daily24 hours
every_3_days3 days
weekly7 days

Allowed Actions ​

ActionWhat it does
reflectWrites a reflection under suitcase_world/reflections/
lead_triageChecks for untriaged job leads and creates a triage plan
strategy_updateCreates a strategy snapshot with observations and suggestions
patch_proposalProposes a system improvement as a patch request
creative_projectReserved for future creative work
user_messageDisabled 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.

bash
# Install the timer (requires sudo)
sudo bash scripts/install_suitcase_pulse.sh

This:

  • Installs suitcase-pulse.service and suitcase-pulse.timer
  • Enables the timer to start on boot
  • Starts the timer immediately

Manual Usage ​

bash
# 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-pager

Viewing Pulse State ​

bash
# Latest pulse result
cat suitcase_world/pulse/latest.json

# Full event log
cat suitcase_world/pulse/events.jsonl

Safety ​

  • 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.

Your private career copilot.