Deploy the Opus system to a VPS for always-on availability.
Problem / Motivation
Currently running locally on Windows 11. The system needs to be always-on for
scheduled tasks (daily briefings, background processing) and accessible from anywhere.
Proposed Solution
Set up a Linux VPS with the Opus repo, Claude Code CLI, and basic automation.
The system should be reproducible: document all setup steps.
VPS provider TBD — consider Hetzner, DigitalOcean, or Contabo for cost efficiency.
Open Questions
⇒
No open questions.
Phase Overview
Phase
Description
Status
Phase 1
Basic VPS Setup
—
Phase 2
Automation
—
Phase 3
Hardening
—
Phase 1: Basic VPS Setup —
Goal: Get Opus running on a VPS with SSH access.
File / Feature
Details
Owner
Status
Provision VPS
Ubuntu/Debian instance
mv
—
Install dependencies
git, node, python, Claude Code CLI
opus
—
Clone repo
Clone repo and verify CLAUDE.md is read correctly
opus
—
SSH + security
Set up SSH access and basic security (firewall, fail2ban)
mv
—
Phase 2: Automation —
Goal: Enable scheduled tasks and vault sync.
File / Feature
Details
Owner
Status
Scheduled tasks
Set up cron jobs or systemd timers for scheduled tasks
opus
—
Git auto-sync
Configure git auto-sync between local and VPS
opus
—
Process monitoring
Keep Claude sessions alive
opus
—
PID lock file
Write process ID to file on startup, check for stale processes. Prevents duplicate instances of background services. Ref: ClaudeClaw Rebuild Prompt
opus
—
Phase 3: Hardening —
Goal: Make the VPS deployment robust and reliable.
File / Feature
Details
Owner
Status
Backup strategy
Backup strategy for vault data
opus
—
Log rotation
Log rotation and monitoring
opus
—
Resource alerts
Resource usage alerts
opus
—
Prerequisites / Gap Analysis
Requirements
Requirement
Description
REQ-1
VPS is accessible via SSH
REQ-2
Claude Code can run sessions on VPS
REQ-3
Vault is synced between local machine and VPS
REQ-4
Basic scheduled tasks can execute unattended
Current State
Component
Status
Details
Local development
done
Running on Windows 11
VPS
—
Not yet provisioned
Gap (What’s missing?)
Gap
Effort
Blocker?
VPS provisioning
Med
No
Reproducible setup script
Med
No
Test
Manual tests
Test
Expected
Owner
Actual
Last
SSH into VPS
Successful login
mv
pending
-
Run Claude Code on VPS
Session starts and reads CLAUDE.md
mv
pending
-
Vault sync
Changes on local appear on VPS
mv
pending
-
Scheduled task execution
Cron job runs unattended
mv
pending
-
AI-verified tests
Scenario
Expected behavior
Verification method
…
…
…
E2E tests
Scenario
Assertion
…
…
Integration tests
Component
Coverage
…
…
Unit tests
Component
Tests
Coverage
…
…
…
History
Date
Event
Details
2026-02-26
Created
Created as part of Phase 1 foundation
2026-02-27
Renumbered
From FR-025 to FR-019
2026-02-28
Rewritten
Aligned to feature-request template
References
FR-022 (Phone Access) — depends on VPS for SSH access from phone