Mike Swanson ba2ed379f8 feat: Add AD2 WinRM automation and modernize sync infrastructure
Comprehensive infrastructure improvements for AD2 (Domain Controller) remote
management and NAS sync system modernization.

## AD2 Remote Access Enhancements

**WinRM Configuration:**
- Enabled PowerShell Remoting (port 5985) with full logging
- Configured TrustedHosts for LAN/VPN access (172.16.*, 192.168.*, 10.*)
- Created read-only service account (ClaudeTools-ReadOnly) for safe automation
- Set up transcript logging for all remote sessions
- Deployed 6 automation scripts to C:\ClaudeTools\Scripts\ (AD user/computer
  reports, GPO status, replication health, log rotation)

**SSH Access:**
- Installed OpenSSH Server (v10.0p2)
- Generated ED25519 key for passwordless authentication
- Configured SSH key authentication for sysadmin account

**Benefits:**
- Efficient remote operations via persistent WinRM sessions (vs individual SSH commands)
- Secure read-only access for queries (no admin rights needed)
- Comprehensive audit trail of all remote operations

## Sync System Modernization (AD2 <-> NAS)

**Replaced PuTTY with OpenSSH:**
- Migrated from pscp.exe/plink.exe to native OpenSSH scp/ssh tools
- Added verbose logging (-v flag) for detailed error diagnostics
- Implemented auto host-key acceptance (StrictHostKeyChecking=accept-new)
- Enhanced error logging to capture actual SCP failure reasons

**Problem Solved:**
- Original sync errors (738 failures) had no root cause details
- PuTTY's batch mode silently failed without error messages
- New OpenSSH implementation logs full error output to sync-from-nas.log

**Scripts Created:**
- setup-openssh-sync.ps1: SSH key generation and NAS configuration
- check-openssh-client.ps1: Verify OpenSSH availability
- restore-and-fix-sync.ps1: Update Sync-FromNAS.ps1 to use OpenSSH
- investigate-sync-errors.ps1: Analyze sync failures with context
- test-winrm.ps1: WinRM connection testing (admin + service accounts)
- demo-ad2-automation.ps1: WinRM automation examples (AD stats, sync status)

## DOS Batch File Line Ending Fixes

**Problem:** All DOS batch files had Unix (LF) line endings instead of DOS (CRLF),
causing parsing errors on DOS 6.22 machines.

**Fixed:**
- Local: 13 batch files converted to CRLF
- Remote (AD2): 492 batch files scanned, 10 converted to CRLF
- Affected files: DEPLOY.BAT, NWTOC.BAT, CTONW.BAT, UPDATE.BAT, STAGE.BAT,
  CHECKUPD.BAT, REBOOT.BAT, and station-specific batch files

**Scripts Created:**
- check-dos-line-endings.ps1: Scan and detect LF vs CRLF
- convert-to-dos.ps1: Bulk conversion to DOS format
- fix-ad2-dos-files.ps1: Remote conversion via WinRM

## Credentials & Documentation Updates

**credentials.md additions:**
- Peaceful Spirit VPN configuration (L2TP/IPSec)
- AD2 WinRM/SSH access details (both admin and service accounts)
- SSH keys and known_hosts configuration
- Complete WinRM connection examples

**Files Modified:**
- credentials.md: +91 lines (VPN, AD2 automation access)
- CTONW.BAT, NWTOC.BAT, REBOOT.BAT, STAGE.BAT: Line ending fixes
- Infrastructure configs: vpn-connect.bat, vpn-disconnect.bat (CRLF)

## Test Results

**WinRM Automation (demo-ad2-automation.ps1):**
- Retrieved 178 AD users (156 enabled, 22 disabled, 40 active)
- Retrieved 67 AD computers (67 Windows, 6 servers, 53 active)
- Checked Dataforth sync status (2,249 files pushed, 738 errors logged)
- All operations completed in single remote session (efficient!)

**Sync System:**
- OpenSSH tools confirmed available on AD2
- Backup created: Sync-FromNAS.ps1.backup-20260119-140918
- Script updated with error logging and verbose output
- Next sync run will reveal actual error causes

## Technical Decisions

1. **WinRM over SSH:** More efficient for PowerShell operations, better error
   handling, native Windows integration
2. **Service Account:** Follows least-privilege principle, safer for automated
   queries, easier audit trail
3. **OpenSSH over PuTTY:** Modern, maintained, native Windows tool, better error
   reporting, supports key authentication without external tools
4. **Verbose Logging:** Critical for debugging 738 sync errors - now we'll see
   actual SCP failure reasons (permissions, paths, network issues)

## Next Steps

1. Monitor next sync run (every 15 minutes) for detailed error messages
2. Analyze SCP error output to identify root cause of 738 failures
3. Implement SSH key authentication for NAS (passwordless)
4. Consider SFTP batch mode for more reliable transfers

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-19 14:28:24 -07:00

ClaudeTools - AI Context Recall System

MSP Work Tracking with Cross-Machine Persistent Memory for Claude

API Status Database Tests Context Recall


🚀 What Is This?

ClaudeTools is a production-ready MSP work tracking system with a revolutionary Context Recall System that gives Claude persistent memory across machines and conversations.

The Problem: Claude forgets everything between conversations. You have to re-explain your project every time.

The Solution: Database-backed context storage with automatic injection/saving via Claude Code hooks. Work on any machine, Claude remembers everything.


Key Features

🧠 Context Recall System (Phase 6)

  • Cross-Machine Memory - Work on any machine, same context everywhere
  • Automatic Injection - Hooks recall context before each message
  • Automatic Saving - Hooks save context after each task
  • 90-95% Token Reduction - Maximum information density
  • Zero User Effort - Set up once, works forever

📊 Complete MSP Platform

  • 130 REST API Endpoints across 21 entities
  • JWT Authentication on all endpoints
  • AES-256-GCM Encryption for credentials
  • Automatic Audit Logging for compliance
  • Full OpenAPI Documentation at /api/docs

💼 MSP Work Tracking

  • Clients, Projects, Work Items, Tasks
  • Billable Time tracking with rates
  • Session management across machines
  • Tag-based organization

🏗️ Infrastructure Management

  • Sites, Infrastructure, Services
  • Networks, Firewall Rules
  • M365 Tenant tracking
  • Asset inventory

🔐 Secure Credentials Storage

  • Encrypted password/API key storage
  • Automatic encryption/decryption
  • Complete audit trail
  • Security incident tracking

Quick Start

First Time Setup

1. Start the API:

cd D:\ClaudeTools
api\venv\Scripts\activate
python -m api.main

2. Enable Context Recall (one-time, ~2 minutes):

# In new terminal
bash scripts/setup-context-recall.sh

3. Verify everything works:

bash scripts/test-context-recall.sh

Done! Context recall now works automatically.

Daily Usage

Just use Claude Code normally:

  • Context automatically recalls before each message
  • Context automatically saves after each task
  • Works on any machine with zero manual syncing

Read First: START_HERE.md for detailed walkthrough


📖 Documentation

Quick References

Complete Guides

Test Reports


🏗️ Architecture

Database (MariaDB 12.1.2)

43 Tables across 6 categories:

  1. Core (5) - Machines, Clients, Projects, Sessions, Tags
  2. MSP Work (4) - Work Items, Tasks, Billable Time, Session Tags
  3. Infrastructure (7) - Sites, Infrastructure, Services, Networks, Firewalls, M365
  4. Credentials (4) - Credentials, Audit Logs, Security Incidents, Permissions
  5. Context Recall (4) - Conversation Contexts, Snippets, Project States, Decision Logs
  6. Junctions (8) - Many-to-many relationships
  7. Additional (11) - Work details, integrations, backups

API (FastAPI 0.109.0)

130 Endpoints organized as:

  • Core (25 endpoints) - 5 entities × 5 operations each
  • MSP (17 endpoints) - Work tracking with relationships
  • Infrastructure (36 endpoints) - Full infrastructure management
  • Credentials (17 endpoints) - Encrypted storage with audit
  • Context Recall (35 endpoints) - Memory system APIs

Context Recall System

9 Compression Functions:

  • Token reduction: 90-95% in production
  • Auto-tag extraction (30+ tags)
  • Relevance scoring with time decay
  • Format optimized for Claude

2 Claude Code Hooks:

  • user-prompt-submit - Auto-recall before message
  • task-complete - Auto-save after task

🔧 Tech Stack

Backend:

  • Python 3.x with FastAPI 0.109.0
  • SQLAlchemy 2.0.45 (modern syntax)
  • Pydantic 2.10.6 (validation)
  • Alembic 1.13.1 (migrations)

Database:

  • MariaDB 12.1.2 on Jupiter (172.16.3.20:3306)
  • PyMySQL 1.1.0 (driver)

Security:

  • PyJWT 2.8.0 (authentication)
  • Argon2-cffi 25.1.0 (password hashing)
  • Cryptography (AES-256-GCM encryption)

Testing:

  • 99.1% test pass rate (106/107 tests)
  • FastAPI TestClient
  • Comprehensive integration tests

📊 Project Status

Progress: 95% Complete (Phase 6 of 7 done)

Completed Phases:

  • Phase 0: Pre-Implementation Setup
  • Phase 1: Database Schema (38 models)
  • Phase 2: Migrations (39 tables)
  • Phase 3: CRUD Testing (100% pass)
  • Phase 4: Core API (25 endpoints)
  • Phase 5: Extended API (70 endpoints)
  • Phase 6: Context Recall System (35 endpoints)

Optional Phase:

  • ⏭️ Phase 7: Work Context APIs (File Changes, Command Runs, Problem Solutions)

System is production-ready without Phase 7.


💡 Use Cases

Scenario 1: Cross-Machine Development

Monday (Desktop): "Implement JWT authentication"
  → Context saves to database

Tuesday (Laptop): "Continue with that auth work"
  → Claude recalls: "You were implementing JWT with Argon2..."
  → No re-explanation needed

Scenario 2: Long-Running Projects

Week 1: Database design decisions logged
Week 4: Return to project
  → Auto-recalls: "Using PostgreSQL for ACID, FastAPI for async..."
  → All decisions preserved

Scenario 3: Institutional Knowledge

Every pattern/decision saved as snippet
  → Auto-tagged by technology
  → Usage tracked (popular snippets rank higher)
  → Future projects auto-recall relevant lessons
  → Knowledge compounds over time

🔐 Security

  • JWT Authentication - All 130 endpoints protected
  • AES-256-GCM Encryption - Fernet for credential storage
  • Argon2 Password Hashing - Modern, secure hashing
  • Audit Logging - All credential operations tracked
  • HMAC Tamper Detection - Encrypted data integrity
  • Secure Configuration - Tokens gitignored, never committed

🧪 Testing

Test Coverage: 99.1% (106/107 tests passing)

Run tests:

# Phase 4: Core API tests
python test_api_endpoints.py

# Phase 5: Extended API tests
python test_phase5_api_endpoints.py

# Phase 6: Context recall tests
python test_context_recall_system.py

# Compression utilities
python test_context_compression_quick.py

📡 API Access

Start Server:

uvicorn api.main:app --reload --host 0.0.0.0 --port 8000

Documentation:

Authentication:

Authorization: Bearer <jwt_token>

🛠️ Development

Project Structure

D:\ClaudeTools/
├── api/                    # FastAPI application
│   ├── main.py            # Entry point (130 endpoints)
│   ├── models/            # SQLAlchemy (42 models)
│   ├── routers/           # Endpoints (21 routers)
│   ├── schemas/           # Pydantic (84 classes)
│   ├── services/          # Business logic (21 services)
│   ├── middleware/        # Auth & errors
│   └── utils/             # Crypto & compression
├── migrations/            # Alembic migrations
├── .claude/              # Context recall system
│   ├── hooks/            # Auto-inject/save hooks
│   └── context-recall-config.env
├── scripts/              # Setup & test scripts
└── tests/                # Comprehensive tests

Database Connection

Host: 172.16.3.20:3306
Database: claudetools
User: claudetools
Password: (see credentials.md)

Credentials: C:\Users\MikeSwanson\claude-projects\shared-data\credentials.md


🤝 Contributing

This is a personal MSP tool. Not currently accepting contributions.


📄 License

Private/Internal Use Only


🆘 Support

Documentation:

Troubleshooting:

# Test database connection
python test_db_connection.py

# Test API endpoints
bash scripts/test-context-recall.sh

# Check logs
tail -f api/logs/app.log  # if logging configured

Built with ❤️ using Claude Code and AI-assisted development

Last Updated: 2026-01-16 Version: 1.0.0 (Production-Ready)

Modes

Enter MSP Mode:

Claude, switch to MSP mode for [client-name]

Enter Development Mode:

Claude, switch to Development mode for [project-name]

Return to Normal Mode:

Claude, switch to Normal mode

Directory Structure

D:\ClaudeTools\
├── .claude/                    # System configuration
│   ├── agents/                 # Agent definitions
│   │   ├── coding.md
│   │   ├── code-review.md
│   │   ├── database.md
│   │   ├── gitea.md
│   │   └── backup.md
│   ├── commands/               # Custom commands/skills
│   │   └── sync.md
│   ├── plans/                  # Plan mode outputs
│   ├── CODE_WORKFLOW.md        # Mandatory review workflow
│   ├── TASK_MANAGEMENT.md      # Task tracking system
│   ├── FILE_ORGANIZATION.md    # File organization strategy
│   └── MSP-MODE-SPEC.md        # Complete architecture spec
│
├── clients/                    # MSP Mode - Client work
│   └── [client-name]/
│       ├── configs/
│       ├── docs/
│       ├── scripts/
│       └── session-logs/
│
├── projects/                   # Development Mode - Projects
│   └── [project-name]/
│       ├── src/
│       ├── docs/
│       ├── tests/
│       └── session-logs/
│
├── normal/                     # Normal Mode - General work
│   ├── research/
│   ├── experiments/
│   └── notes/
│
└── backups/                    # Local backups (not in Git)
    ├── database/
    └── files/

Database Schema

36 tables total - See MSP-MODE-SPEC.md for complete schema

Core tables:

  • machines - User's machines and capabilities
  • clients - MSP client information
  • projects - Development projects
  • sessions - Conversation sessions
  • tasks - Checklist items with context
  • work_items - Individual pieces of work
  • infrastructure - Servers, devices, equipment
  • environmental_insights - Learned constraints
  • failure_patterns - Known failure patterns
  • backup_log - Backup history

Database: MariaDB on Jupiter (172.16.3.20)

Agent Workflows

Code Implementation

User Request
    ↓
Coding Agent (generates production-ready code)
    ↓
Code Review Agent (mandatory review - minor fixes or rejection)
    ↓
┌─────────────┬──────────────┐
│ APPROVED ✅ │ REJECTED ❌  │
│ → User      │ → Coding Agent│
└─────────────┴──────────────┘

Task Management

User Request → Tasks Created (Database Agent)
    ↓
Agents Execute → Progress Updates (Database Agent)
    ↓
Work Complete → Tasks Marked Done (Database Agent)
    ↓
Gitea Agent → Commits with context
    ↓
Backup Agent → Daily backup if needed

Key Documents

  • MSP-MODE-SPEC.md - Complete architecture specification
  • CODE_WORKFLOW.md - Mandatory code review process
  • TASK_MANAGEMENT.md - Task tracking and checklist system
  • FILE_ORGANIZATION.md - Hybrid storage strategy

Commands

/sync

Pull latest configuration from Gitea repository

claude /sync

Backup Strategy

  • Daily backups - 7 days retention
  • Weekly backups - 4 weeks retention
  • Monthly backups - 12 months retention
  • Manual/pre-migration - Keep indefinitely

Backup location: D:\ClaudeTools\backups\database/

Git Repositories

System repo: azcomputerguru/claudetools

  • Configuration, agents, workflows

Client repos: azcomputerguru/claudetools-client-[name]

  • Per-client MSP work

Project repos: azcomputerguru/[project-name]

  • Development projects

Development Status

Phase: Architecture Complete, Implementation Pending Created: 2026-01-15 Status: Foundation laid, ready for implementation

Next Steps

  1. Implement ClaudeTools API (Python FastAPI)
  2. Create database on Jupiter
  3. Build mode switching mechanism
  4. Implement agent orchestration
  5. Test workflows end-to-end

Architecture Highlights

Context Preservation

  • Agents handle heavy processing (90-99% context saved)
  • Main Claude orchestrates and communicates
  • Database stores persistent context

Quality Assurance

  • No code bypasses review (zero exceptions)
  • Production-ready code only
  • Comprehensive error handling
  • Security-first approach

Data Safety

  • Multiple backup layers
  • Version control for all files
  • Database backups with retention
  • Disaster recovery procedures

Contact

System: ClaudeTools Author: Mike Swanson with Claude Sonnet 4.5 Organization: AZ Computer Guru Gitea: https://git.azcomputerguru.com/azcomputerguru/claudetools

License

Internal use only - AZ Computer Guru


Built with Claude Sonnet 4.5 - January 2026

Description
Custom Claude Code behaviors and workflows - Multi-mode operation system
Readme 106 MiB
Languages
Python 33.8%
Rust 22.9%
PowerShell 16.7%
HTML 11.3%
TypeScript 5.4%
Other 9.8%