Back to Portfolio

Enterprise Deployment System

From Idea to Production AI Infrastructure

11 production services, an agentic framework, a PostgreSQL-backed knowledge graph, and a multi-agent Memory Archive with 30+ MCP tools — designed, built, and operated solo from a Product Management background.

View Live Infrastructure →

Production Services

11 services running 24/7 — Career Bot, Memory Archive, Knowledge Graph, agentic framework, and more

From PM to Full-Stack AI Operator
Designed, built, and operate the entire system solo — from launchd service definitions and nginx upstreams to a multi-agent Memory Archive with 30+ MCP tools, a PostgreSQL-backed Knowledge Graph, and an agentic framework shared across services. Built from a Product Management background using AI-assisted development with disciplined architecture, CI, and operational rigor.
Product Management Multi-Agent Systems MCP / RAG / KG DevOps PostgreSQL
Career Bot — Public Chat
RAG-backed Q&A about my work and experience. Houses the production-live Talent Manager agent (protocol mirror + phase-gated state + rate-limited executor). Click to open the chat on the home page.
Flask · :8000 Claude RAG Talent Manager
Memory Archive + Knowledge Graph
Central brain for every agent. PostgreSQL-backed memories, instructions, sessions register, and a knowledge graph of nodes & edges. Exposes 30+ MCP tools at /memory-archive/mcp (bearer auth) for any Claude session to pull live context.
Flask · :5009 PostgreSQL MCP · 30+ tools Knowledge Graph
Resume Builder
Single-stage Opus pipeline that converts a job description + base résumé into a tailored, JSON-validated PDF. Hits Memory Archive for past-job context; uses Redis for job queue + caching.
Flask · :8004 Claude Opus Redis PDF gen
Blog (Public + Admin)
Two-service blog: a public reader and an authenticated admin that drives an AI content-generation pipeline. Persists posts and analytics in PostgreSQL; ships through the same deployment pipeline as everything else.
Flask · :8006/:8007 PostgreSQL AI authoring
Agentic Framework
Pip-installable package shared by every service: ProviderRegistry (multi-LLM), cost tracking, workflows, RAG, evaluation. One source of truth for how services talk to LLMs — change the registry, every service inherits the change.
Python package pip install -e Cost tracking RAG / Eval
Continuous Learning Agent
Weekly scanner that mines Memory Archive for stale memories, stale-but-important entries, and unused instructions. Auto-edits low-importance items; routes the rest to a proposals dashboard for human approval. Runs Sundays via launchd.
launchd PostgreSQL Slack pre-filter
Personal Assistant + Morning Brief
Flask + APScheduler daemon (port 5017) and a 6:30 AM digest service (port 5014) that stitches together Memory Archive activity, GitHub PRs, service health, and Slack approvals into one report.
APScheduler Slack launchd · cron
Prototype Studio + Discotheque
Internal sandbox for new ideas and a media-tinkering surface. Shares the same deploy pipeline, MA observability, and CI gates as the public services — proving that internal tools and production tools live on one substrate.
Flask · :5015 / :5016 Internal Same pipeline
Contact API + FAL App
Lightweight services that round out the public surface — a contact form endpoint to SMTP and an image-generation app via Fal.ai. Both wired into the same launchd + nginx + CSP infrastructure as the rest.
Flask · :8003 / :8001 SMTP Fal.ai

Deployment Pipeline

From local edit to live production — code path through the pipeline

System Status & Operations

Enterprise-grade infrastructure with professional monitoring

System Health
Fully Operational
Uptime
99.9% Availability
Security
SSL/TLS Enabled
Backups
Automated Daily

Technical Excellence & Innovation

Professional DevOps practices from first principles

Enterprise Operations

Built professional-grade deployment pipeline with automated safety mechanisms, health monitoring, and zero-downtime operations across multiple applications.

  • One-command deployment automation
  • Automated backup and recovery systems
  • Real-time health monitoring and alerts
  • Professional logging and analytics

VPS Infrastructure Mastery

Designed and deployed complete Virtual Private Server infrastructure from scratch, managing Ubuntu server configuration, service orchestration, SSL/TLS security, and multi-application hosting architecture.

  • Full VPS deployment and management
  • Multi-application service orchestration
  • SSL/TLS security with auto-renewal
  • Professional monitoring and alerting

Command Center Operations

Lightning-fast deployment and monitoring operations

< 30s
Full Backup & Deploy
1-Click
Git Commit & Push
Real-time
Health Dashboards
Instant
System Validation

Intelligent Monitoring

Real-time system dashboards providing instant visibility into application health, performance metrics, service status, and operational analytics across all production environments.

  • Live application health monitoring
  • Automated git workflow integration
  • Performance analytics tracking
  • Proactive system alerting

DevOps Pipeline Architecture

Professional deployment and monitoring infrastructure

Automated Deployment Pipeline

1
Safety Backup
Automated backup creation with timestamp to /var/backups/www-applications/
2
Code Synchronization
Rsync deployment from dev to production with exclusion filters
3
Permission Management
Automated chown operations ensuring proper www-data ownership
4
Service Restart
launchctl kickstart -k system/com.coreyscherrer.<svc> with a curl-loop until the health endpoint returns 200 — breaks throttle on stuck launchd jobs without dropping in-flight requests.
5
Health Verification
Automated health checks and deployment verification

Monitoring & Analytics

📊
Real-time Analytics
Per-service cost tracking via the agentic-framework registry. LLM spend, latency, and error rates feed the Memory Archive; Career Bot Q&A history persists to PostgreSQL.
🔍
Health Monitoring
Dedicated health endpoints with JSON status reporting and service validation
📝
Log Management
Centralized logging with journalctl integration and nginx access/error tracking

Security & Backup Strategy

🔒
SSL/TLS Security
Let's Encrypt certificates with auto-renewal and HTTPS enforcement
💾
Automated Backups
Pre-deployment safety backups with timestamp retention and centralized storage
🚨
Recovery Procedures
One-command rollback capabilities with documented recovery processes

Infrastructure Architecture

macOS launchd-managed services, nginx upstreams, PostgreSQL + Redis data tier

Development Environment (multi-agent worktrees)

🌳
Git worktrees per branch
/Users/admin/Sites stays on main; every active branch lives in its own /Users/admin/Sites-wt/<branch>. Prevents silent branch flips when multiple Claude agents work the repo concurrently.
📦
Per-service venvs + dev ports
Each service has its own venv/ and dev port (5000s range). Career Bot 5000, Resume Builder 5003, Blog 5006/5007, Memory Archive 5009, Prototype Studio 5015, Discotheque 5016 — all backed by the shared agentic-framework package.
🪝
Session hooks → Memory Archive
Every Claude Code session loads MA context on start (load-context.sh) and syncs memories on exit. Sessions register itself for auditability at /memory-archive/sessions.
🛡️
Per-service CLAUDE.md + AGENT_OF_RECORD.md
Each service ships its own instructions and an explicit owner agent. STOP-READ-FIRST headers fail-loud if context-loading hooks didn't fire — prevents agents from acting without knowing the rules.

Production Host (macOS + launchd + nginx)

🌐
Nginx (:80 → :443)
Reverse proxy with Let's Encrypt SSL termination, strict CSP (so vendor libs are self-hosted, no CDN scripts), and per-route auth gating for the Memory Archive admin surface.
⚙️
launchd (not systemd)
Every service runs as a com.coreyscherrer.<service> launchd job. Restart with sudo launchctl kickstart -k system/com.coreyscherrer.<svc>. Cron-style work (orphan audits, weekly learning agent, NAS backup) runs as scheduled launchd jobs.
🐘
PostgreSQL — single source of truth
One Postgres instance backs Career Bot, Blog, Resume Builder, Memory Archive, Knowledge Graph, and the Continuous Learning Agent. Database ownership documented in docs/architecture/DATABASE_OWNERSHIP.md so no service writes outside its lane.
Redis — queues + caching
Job queue for Resume Builder's PDF pipeline and rate-limit/state cache for Career Bot. Independent of Postgres so a slow LLM call never blocks transactional reads.
💾
3-2-1 backup tier
Local snapshots + Tailscale-mounted Synology NAS (DS918+) over SMB form the third leg of a 3-2-1 backup strategy. Daily NAS health-check posts to Slack.

Production Services (11 launchd jobs)

🤖
career-bot · :8000
Public chat. Houses Talent Manager (production-live multi-agent reference pattern).
🧠
memory-archive · :5009
PostgreSQL-backed memories + instructions + sessions + Knowledge Graph. MCP hub at /memory-archive/mcp with 30+ tools (bearer auth).
📄
resume-builder · :8004
Single-stage Opus → JSON → PDF pipeline. Uses Redis for job queue + caching.
📰
blog-public · :8006    blog-admin · :8007
Two-service blog: public reader + authenticated admin with AI authoring pipeline.
🎨
fal-app · :8001    contact-api · :8003
Image generation via Fal.ai and a contact-form-to-SMTP endpoint.
🛠️
prototype-studio · :5015    discotheque · :5016
Internal sandbox + media surface. Same pipeline, same observability as public services.
personal-assistant · :5017    morning-brief · :5014
APScheduler daemon and a 6:30 AM digest service that aggregates MA activity, GitHub PRs, service health, and Slack approvals.

Memory Archive + Knowledge Graph (the brain)

🔌
MCP endpoint — 30+ tools
/memory-archive/mcp exposes capture/search/update memory, instructions, knowledge-graph queries, sessions, and specialized review agents (architecture, database, security, observability, FinOps, UX, reliability) — bearer-auth protected, callable from any Claude session.
🕸️
Knowledge Graph — nodes & edges
Services, agents, decisions, learnings, and instructions are first-class nodes. Edges encode owns/depends-on/produces/relates-to. Visualized at /context-graph.html and /memory-archive/graph; agents query the KG to answer cross-service questions instead of grep-ing the codebase.
📋
Sessions register + audit
Every session writes session_id, agent_key, cwd, and hook_fired bool. Dashboard at /memory-archive/sessions shows fired/missed counts in a 48h window — cheap insurance that the context-loading discipline is working.
🔁
Continuous Learning Agent
Weekly scanner. Three deterministic detectors: stale memories, stale-but-important, unused instructions. Auto-edits low-importance items; routes the rest to the proposals dashboard with Slack approve/deny pre-filter.

Agentic Framework + Talent Manager pattern

🧩
agentic-framework — shared package
Pip-installable. ProviderRegistry abstracts Anthropic/OpenAI/Fal behind one interface. Built-in cost tracking, workflows, RAG, and evaluation. Imported by Career Bot, Resume Builder, Blog, FAL App — single source of truth for LLM access.
🪞
Talent Manager — protocol mirror + phase gates
Production-live agent inside Career Bot. Mirrors LinkedIn-style talent-search protocol; phase-gated state machine (scout → resolve → outreach) with rate-limited HTTP executor. Reference template that other service agents follow.
🛡️
Specialized review agents
Architecture, Database, Security, FinOps, Observability, Reliability, UX — each a standalone Opus 4.7 agent exposed as an MCP tool. Architecture Agent flags blast-radius and contract-at-risk; Database Agent gives APPROVE / APPROVE_WITH_CONDITIONS / BLOCK / NEED_INFO verdicts on schema diffs.
📑
Per-service AGENT_OF_RECORD.md
Every public service has an explicit owner agent and a CLAUDE.md drafted by the Documentation Agent (cited sources + explicit TODOs). When you ask "who runs X?" the answer is in the file, not in someone's head.

CI / Review / Deploy gates

GitHub Actions — lint, build, tests
Every PR runs the same gates. Branch protection on main blocks direct push — everything lands via PR + squash merge.
🐰
CodeRabbit AI review
Automated review pass on every PR. Surfaces silent failures, type-design gaps, comment rot, and test-coverage holes before a human reads the diff.
🚀
dev-ops.sh deploy <service> --yes
Single command: rsync dev → prod, fix ownership, kickstart launchd, curl-loop until the health endpoint returns 200. shared/ deploys via a marker in requirements.txt that triggers deploy-common.sh automatically.
🌳
Cross-service health probe
After any deploy: probe ALL 11 services, not just the one touched. Catches regressions where a shared-package change breaks a service you didn't think you'd touched.

Service Architecture Diagrams

Explore detailed architecture for each microservice

Experience Professional AI Infrastructure

Explore the live production environment showcasing enterprise-grade deployment practices and AI application management.