Decisions

  • Pending: VPS provider selection (Hetzner, DigitalOcean, Contabo)

User Tasks


Summary

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

PhaseDescriptionStatus
Phase 1Basic VPS Setup
Phase 2Automation
Phase 3Hardening

Phase 1: Basic VPS Setup —

Goal: Get Opus running on a VPS with SSH access.

File / FeatureDetailsOwnerStatus
Provision VPSUbuntu/Debian instancemv
Install dependenciesgit, node, python, Claude Code CLIopus
Clone repoClone repo and verify CLAUDE.md is read correctlyopus
SSH + securitySet up SSH access and basic security (firewall, fail2ban)mv

Phase 2: Automation —

Goal: Enable scheduled tasks and vault sync.

File / FeatureDetailsOwnerStatus
Scheduled tasksSet up cron jobs or systemd timers for scheduled tasksopus
Git auto-syncConfigure git auto-sync between local and VPSopus
Process monitoringKeep Claude sessions aliveopus
PID lock fileWrite process ID to file on startup, check for stale processes. Prevents duplicate instances of background services. Ref: ClaudeClaw Rebuild Promptopus

Phase 3: Hardening —

Goal: Make the VPS deployment robust and reliable.

File / FeatureDetailsOwnerStatus
Backup strategyBackup strategy for vault dataopus
Log rotationLog rotation and monitoringopus
Resource alertsResource usage alertsopus

Prerequisites / Gap Analysis

Requirements

RequirementDescription
REQ-1VPS is accessible via SSH
REQ-2Claude Code can run sessions on VPS
REQ-3Vault is synced between local machine and VPS
REQ-4Basic scheduled tasks can execute unattended

Current State

ComponentStatusDetails
Local developmentdoneRunning on Windows 11
VPSNot yet provisioned

Gap (What’s missing?)

GapEffortBlocker?
VPS provisioningMedNo
Reproducible setup scriptMedNo

Test

Manual tests

TestExpectedOwnerActualLast
SSH into VPSSuccessful loginmvpending-
Run Claude Code on VPSSession starts and reads CLAUDE.mdmvpending-
Vault syncChanges on local appear on VPSmvpending-
Scheduled task executionCron job runs unattendedmvpending-

AI-verified tests

ScenarioExpected behaviorVerification method

E2E tests

ScenarioAssertion

Integration tests

ComponentCoverage

Unit tests

ComponentTestsCoverage

History

DateEventDetails
2026-02-26CreatedCreated as part of Phase 1 foundation
2026-02-27RenumberedFrom FR-025 to FR-019
2026-02-28RewrittenAligned to feature-request template

References

  • FR-022 (Phone Access) — depends on VPS for SSH access from phone
  • FR-025 (Atlas Vault Integration) — VPS needed for always-on Atlas access
  • ClaudeClaw Rebuild Prompt — background service setup (launchd/systemd), PID lock files, scheduled tasks
  • FR-044 (Task Scheduler) — scheduler runs on VPS