Bootstrap home-apps and fix Emacs/iPad integration issues.
Changes:
- Added home-apps-session-summary.md documenting Emacs config fixes
- Updated CLAUDE.md session history with 2026-04-12 entry
- Added home-apps to VPS instance list in CLAUDE.md
Repository: http://100.120.125.113:3000/pdm/homelab-agents
Next Session Focus: Test mermaid rendering on iPad end-to-end
Addresses the issue where multiple ssh-agent processes run and the shell
uses /tmp/ssh-* socket instead of systemd's socket.
Improvements:
- Enhanced diagnostic script detects wrong socket usage automatically
- New troubleshooting section for "Multiple ssh-agent processes running"
- Step-by-step fix to clean up ~/.bashrc and use correct socket
- Verification steps to confirm fix
Fixes the symptom: 12 agents running, SSH_AUTH_SOCK pointing to /tmp
instead of ${XDG_RUNTIME_DIR}/ssh-agent.socket
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Added critical troubleshooting section for "identity_sign: private key
contents do not match public" error under Common Issues.
Includes:
- Quick fix command to generate correct public key
- Step-by-step instructions to update key on Gitea
- Full diagnostic script for key mismatch investigation
Addresses the issue where wrong public keys get uploaded to Gitea,
causing authentication failures after initial setup works.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
PROBLEM: Step 7 ~/.bashrc method still not persistent - agent dies on logout
ROOT CAUSE: ~/.bashrc approach relies on shell process lifecycle
- Agent dies when last shell exits
- Socket files get cleaned up
- User must manually restart on next login
NEW SOLUTION: Systemd user service keeps agent truly persistent
- Agent runs as systemd service (survives logout/reboot)
- Single socket location managed by systemd
- Auto-starts on user login
- Works across all shells and sessions
- No manual intervention needed
IMPROVEMENTS:
- Added systemd-based setup as recommended method
- Kept ~/.bashrc method as fallback (for systems without systemd)
- Added comprehensive diagnostic script
- Added troubleshooting for common issues
- Quick reference commands for management
The systemd method is production-grade and used in enterprise environments.
SSH agent now persists forever (until explicitly stopped).
Added NetBox DHCP pool configuration automation scripts. Created tools to reserve DHCP pool IP ranges (.100-.150) via NetBox API, preventing them from showing as "available" for static assignment.
Changes:
- Created sys-apps-netbox-dhcp-setup.py: Creates IP Range objects for DHCP pools
- Created sys-apps-netbox-reserve-dhcp-ips.py: Reserves individual IPs as "Reserved" status
- Updated sys-apps-session-summary.md with comprehensive session documentation
- Updated CLAUDE.md with session 2025-11-30 history entry
- Configured 255 IPs across 5 VLANs (51 IPs per /24 subnet)
- Established DHCP pool standard: .100-.150 for all networks
Repository: http://100.120.125.113:3000/pdm/homelab-agents
Next Session Focus: Document NetBox token management and create dhcp-pool tag
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Moved Skool + n8n integration documentation to its own repository at:
http://100.120.125.113:3000/pdm/skool.git
This content belongs in the project-specific skool repository rather than
the shared homelab-agents repository, which is for reusable Claude Code agents.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Created comprehensive setup guide for syncing Skool community members to email lists via n8n. Includes browser token extraction guide, n8n workflow template, and configuration examples for multiple email platforms (ConvertKit, Mailchimp, ActiveCampaign, SendGrid).
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Comprehensive session documenting cleanup and standardization of homelab-agents repository. Established clear file naming conventions, consolidated duplicate documentation, and ensured agent compatibility across all VPS instances.
Changes:
- Updated sys-apps-session-summary.md with complete session documentation
- Updated CLAUDE.md with session history and VPS hostname change (108-system-apps → sys-apps)
- Session covers: workflow docs, naming conventions, git basics, and documentation consolidation
- All changes from 8 commits throughout session now documented
Repository: http://100.120.125.113:3000/pdm/homelab-agents
Next Session Focus: Test finish-up agent on real project repository
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Removed hardcoded "sys-apps" hostname from CLAUDE.md.
Now instructs Claude to always run `hostname` command dynamically.
This ensures the naming convention works on any VPS without modification.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Documented rule: ALL new files must be prefixed with hostname
- Format: {hostname}-{description}.md
- Example: sys-apps-git-quick-reference.md
- Exception: agents/ directory (shared across VPS)
Current hostname: sys-apps
This ensures future sessions follow the naming convention automatically.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Created sys-apps-git-quick-reference.md with basic git commands:
- Daily workflow (add, commit, push)
- Simple explanations
- Common patterns
- When to use finish-up vs manual git
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Deleted old session summary files that don't follow the new naming convention:
- gitea-installation-session-summary.md
- gitea-domain-and-ssh-fixes-session-summary.md
Current session summary: sys-apps-session-summary.md
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
VPS hostname changed from 108-system-apps to sys-apps.
Updated session summary filename to match new hostname:
- homelab-agents-108-system-apps-session-summary.md → sys-apps-session-summary.md
Also aligns with new simplified naming format: {hostname}-session-summary.md
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Changed filename from [PROJECT_NAME]-[HOSTNAME]-session-summary.md
to [HOSTNAME]-session-summary.md
Rationale:
- Session summary is saved inside project directory
- Project name in filename is redundant
- Simpler, cleaner filename
- No timestamp (overwrites each session)
Updated files:
- agents/finish-up.md: Updated filename format in Steps 1, 3, and 7
- CLAUDE.md: Updated agent naming convention and session history
- WORKFLOW.md: Updated agent behavior description
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Added WORKFLOW.md with streamlined instructions for:
- One-line VPS setup via curl bootstrap script
- Simple 3-step project workflow
- Key rules for where to run finish-up agent
- Quick reference table
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Brief verification session confirming that the Finish Up Agent rename and VPS hostname tracking features were already implemented in previous work. Created initial CLAUDE.md context file and session summary for 108-system-apps VPS.
Changes:
- Added CLAUDE.md with comprehensive project context and session history
- Created homelab-agents-108-system-apps-session-summary.md documenting verification session
- Established baseline documentation for future session continuity
Repository: http://100.120.125.113:3000/pdm/homelab-agents
Next Session Focus: Test Finish Up Agent functionality on this VPS instance
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Renamed the agent from 'sysadmin-session-closer' to 'finish-up' and added VPS hostname functionality to session summary filenames.
Changes:
- Renamed agent file: agents/sysadmin-session-closer.md → agents/finish-up.md
- Updated agent version to 1.1.0
- Modified agent to include VPS hostname in session summary filenames
- Session summaries now use format: [PROJECT_NAME]-[HOSTNAME]-session-summary.md
- Hostname is auto-detected using `hostname` command
- Updated all documentation references:
- README.md, QUICK-START.md, agents/README.md
- scripts/README.md, scripts/bootstrap-agents.sh, scripts/init-project.sh
- Improved agent description to mention VPS hostname functionality
Repository: http://100.120.125.113:3000/pdm/homelab-agents
Next Session Focus: Test the renamed agent on a VPS project to verify hostname detection works correctly
🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
Completed in this session:
- Integrated Gitea with Pangolin Tunnel (git.pdmarf.co.uk domain)
- Fixed protocol mismatch (HTTPS ROOT_URL with HTTP service)
- Fixed SSH agent persistence bug in VPS-SSH-KEY-SETUP.md Step 7
- Updated documentation for dual access (internal IP + domain)
- Comprehensive troubleshooting guides added
All systems operational and ready for VPS deployment.
Both repositories functional and fully documented.
Next session: Deploy to actual VPS and test complete workflows.
PROBLEM: Original Step 7 script was buggy - agent would die on logout
SOLUTION: Rewritten Step 7 with proper ssh-agent persistence that:
- Detects existing running agents and reuses socket
- Persists socket location across shell sessions
- Auto-loads SSH key on new terminals
- Works reliably across multiple terminal windows
Key changes:
- Saves SSH_AUTH_SOCK to ~/.ssh/agent.sock for persistence
- Auto-adds key if not already loaded
- Includes simpler fallback version if complex version fails
- Detailed troubleshooting section
- Clear instructions on placement in ~/.bashrc
Agent now stays loaded for the entire user session duration.
- IMPORTANT: Clarify repo must be created on Gitea FIRST
- Add Step 1: Create repository on Gitea
- Add Step 2: Run init-project
- Provide direct link to Gitea repo creation
- Show example output with SSH remote
- Update workflow summary with correct order
- Step 1: Create repo on Gitea web UI first
- Step 2: Run init-project to set up local copy
- Emphasize SSH authentication for git push
- Update workflow summary with correct order
- Clarify agents use SSH remote
- Emphasize: Create repo on Gitea FIRST, then init-project
- Add Step 1: Create repository on Gitea web UI
- Add Step 2: Run init-project to configure local repo
- Update workflow summary to show correct order
- Add SSH key setup section
- Clarify that init-project connects to existing repo
- Step-by-step instructions for key generation
- How to add public key to Gitea
- Testing SSH connection
- Integration with init-project workflow
- Troubleshooting tips
- Changed remote format: HTTP → SSH (git@host:org/repo.git)
- Better for VPS deployments (key-based auth)
- Check for SSH key and warn if missing
- Provide setup instructions in init output
- Agents still copied to .claude/agents/
- Lead with 'source' bootstrap command
- Point to QUICK-START for details
- Show new project init-project workflow
- Clarify agents available at .claude/agents/
- Update usage section
- Keep structure and documentation references
- Updated usage comment to show 'source' syntax
- Add IMPORTANT note about why to use source not bash
- Remove misleading 'Tip' about restarting shell
- Clarify commands are ready immediately
- Update output messaging
- Creates .claude/agents/ directory in each project
- Automatically copies agents from ~/.homelab-agents/agents/
- Makes agents available for Claude Code locally
- Agents can be referenced as .claude/agents/agent-name.md
- Gracefully handles missing agents
- Automatically adds 'export PATH="$HOME/.homelab-scripts:$PATH"' to ~/.bashrc
- Checks if already present to avoid duplicates
- Also adds to current session PATH immediately
- Eliminates need for manual 'export PATH' commands
- init-project now works in all future shells
- Document complete VPS setup workflow
- Show init-project usage for new projects
- Explain project structure (separate repos)
- Simplify instructions for clarity
- Include agent auto-update info
- Remove all user prompts for repository URL
- URL is now always constructed from folder name
- Add CRITICAL section highlighting auto-detection
- Simplify Step 5 to make auto-detection foolproof
- Update QA checklist to verify URL was auto-detected
- Never ask user for URL - this is a bug if it happens
- Agent now supports GITEA_API_TOKEN environment variable
- Automatically creates Gitea repos for new VPS projects
- Includes setup guide for generating and storing API tokens
- Falls back gracefully if token not available
- Reduces manual repo creation steps on new VPS instances
Documents completed work including:
- Fixed Gitea login 404 by updating domain to git.pdmarf.co.uk
- Configured ROOT_URL and SSH_DOMAIN for Pangolin tunnel access
- Set up automated daily database backups (2 AM cron, 7-day retention)
- Tested and verified backup/restore process
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>