Infrastructure as code-medy: we Nix the toil and let configs do the talking.
dryvist is the infrastructure org: humans set direction, AI agents implement,
automation runs routines, and a human signs off; configurations are declared
once, reproduced everywhere, and observable end to end.
docs.jacobpevans.com explains the architecture, flows, decisions, and connections; the public repo list shows what is open to explore. Private repos exist and keep their details to themselves.
%%{init: {'theme':'base','themeVariables':{'primaryColor':'#4FB3A9','primaryTextColor':'#0B1D2A','primaryBorderColor':'#2F7E78','lineColor':'#E06B4A','secondaryColor':'#102937','tertiaryColor':'#0B1D2A','clusterBkg':'transparent','clusterBorder':'#4FB3A9','fontFamily':'Geist','fontSize':'16px'}}}%%
flowchart LR
subgraph Human["Human"]
direction TB
H1(["Roadmap"])
H2(["GitHub Issues"])
H3(["Final sign-off"])
end
subgraph Agents["AI Agents"]
direction TB
A1(["Claude / Gemini / Copilot"])
A2(["Implementation"])
A3(["AI Code Review"])
end
subgraph Dryvist["dryvist repos"]
direction TB
D1(["Declarative configs"])
D2(["Reusable modules"])
D3(["Scheduled routines"])
end
subgraph Auto["Automation"]
direction TB
T1(["CI / lint / tests"])
T2(["Deploy / converge"])
T3(["Telemetry"])
end
H1 --> H2 --> A1 --> A2 --> D1 --> T1 --> T2 --> T3 --> A3 --> H3
classDef human fill:#4FB3A9,stroke:#2F7E78,stroke-width:2px,color:#0B1D2A
classDef ai fill:#E06B4A,stroke:#C25638,stroke-width:2px,color:#0B1D2A
classDef repo fill:#102937,stroke:#4FB3A9,stroke-width:2px,color:#F4EFE6
classDef auto fill:#2F7E78,stroke:#4FB3A9,stroke-width:2px,color:#F4EFE6
class H1,H2,H3 human
class A1,A2,A3 ai
class D1,D2,D3 repo
class T1,T2,T3 auto
linkStyle default stroke:#E06B4A,stroke-width:3px
An Issue cues the agents; CI checks the changes, automation converges the configuration, and telemetry reports back before AI reviews the PR and a human signs off. The loop keeps its receipts.
Reproducible Nix configurations cover developer laptops through bare metal.
- Use
nix developto open a workspace with the right tools for each language and workload. - Home Manager keeps dotfiles, shells, and command-line tools identical across macOS and Linux.
- Composable Home Manager modules install Claude Code, Gemini, Copilot, local MLX, and MCP servers; AI assistants get the same declarative treatment as neovim.
- The
nix-darwinand NixOS configurations include AI server profiles for ROCm and CUDA workloads. - Netboot bootstraps bare metal unattended, and we Nix the toil.
OpenTofu provisions VMs, networks, cloud accounts, and GitHub, while Terrakube runs homelab workspaces. Reusable modules build golden images and manage org governance.
- Proxmox VMs, LXC containers, networks, and firewalls use declarative configuration with safe concurrent state.
- Terrakube workspaces use native remote state and locking.
- Self-hosted GitHub Actions spot runners keep CI fast and inexpensive.
- Code manages GitHub rulesets, required workflows, and repository settings.
Terraform provisions the infrastructure, and Ansible converges it into services; the result is playbooks, not play-by-ear.
- Proxmox roles harden hosts, tune performance, configure ZFS and swap, and set monitoring baselines.
- Application roles run observability platforms, syslog load balancers, and other long-running services.
Vendor-agnostic instructions, workflows, plugins, and scheduled routines coordinate assistants across the portfolio.
- One framework lets Claude, Gemini, Copilot, and local models follow the same rules.
- Reusable workflows handle portfolio maintenance around the clock, including issue triage, cleanup sweeps, and multi-repo orchestration.
- Claude Code plugins, agents, skills, hooks, and slash commands support everyday development.
- Cron delivers daily portfolio briefings, PR triage, repository health scores, and automated polish.
Telemetry monitors services and traces AI code, while logs have their own supporting cast.
- Cribl Edge collectors shape data in-stream before egress from laptops, Kubernetes nodes, and homelab hosts.
- Cribl Stream workers fan data out to backends and reduce billed ingest volume.
- OpenTelemetry carries application traces, metrics, and logs, while Splunk provides indexes, HEC inputs, apps, and dashboards.
- Benchmark harnesses measure local LLM inference on Apple Silicon.
Templates and small utilities provide starter scaffolds for new projects.
- Project templates configure linting, formatting, type checks, pre-commit hooks, and 100% coverage gates from the start.
- Terrakube-managed OpenTofu workspace starters and Cribl Edge/Stream pack scaffolds cover new project setup.
- Workflow utilities draft issues with local AI and schedule maintenance across people, agents, and GitHub.
The portfolio has five layers, and shared telemetry makes each one observable.
- Reproducibility (Nix). Every machine starts from a Nix flake, and
nix buildis the only entry. - Provisioning (Terrakube / OpenTofu). Once a Nix-built host exists, workspaces allocate cloud and homelab VMs, LXC containers, cloud resources, and GitHub governance.
- Configuration (Ansible). Idempotent roles converge provisioned hosts to their declared services.
- Observability (Cribl + OpenTelemetry + Splunk). Shared pipelines shape, index, and alert on telemetry from every layer, including AI traces.
- AI control plane. Multi-model assistants, workflows, and routines draft changes, review PRs, triage issues, maintain layers, and report through the same fabric.
Read the architecture guide.
Humans and AI agents read, edit, and review every repo together:
- Shared instructions: Every repo carries or inherits
AGENTS.md, so Claude, Gemini, Copilot, and local models receive shared context, rules, and conventions. - Multi-model PR review: Multiple models review every change before human approval, and the mix helps catch different bugs.
- Scheduled routines: Cron runs maintenance, triage, and health checks on a schedule.
- AI telemetry: OpenTelemetry traces and session logs record assistant activity in the shared pipeline.
The AI development overview explains the repo pattern.
docs.jacobpevans.com is the single, capability-organized front door.
The shared configuration hub is dryvist/.github.
| Concern | Standard |
|---|---|
| License | Apache-2.0, unless a repo states otherwise |
| Commits | Conventional Commits (feat: / fix: / chore:) drive automated releases |
| Releases | release-please: fix: patch, feat: minor, major releases human-initiated |
| Code review | Every PR gets multi-model AI review before human sign-off |
| Code lint / format | Biome for JS/TS/JSON/CSS; canonical config in dryvist/.github |
| Markdown lint | markdownlint-cli2 with org-wide rules |
| Workflow security | zizmor; org-wide policy in dryvist/.github |
| Dependency updates | Renovate extends shared presets |
| AI assistant policy | Versioned AGENTS.md in every repo; org policy in dryvist/.github |
| CI runners | Self-hosted on AWS spot capacity; GitHub-hosted fallback for short macOS jobs |
| Security reporting | SECURITY.md auto-applied to every repo's Security tab |
- JacobPEvans HQ — This is the front door, so commit on in.
- Cribl — Nobody gets Cribl'd on our watch.
- Jacob's Splunk Dump — It's a well-organized dump.
- Ansible Collections — It's playbooks, not play-by-ear.
- Jacob's OpenBao Secrets Plugins — Keeping secrets is our Bao-nus.
- VCT Cribl — Find some Edge-ucation for your logs.
- VCT Splunk — We Splunk it like it's hot.
- JacobPEvans-personal — Its profile assets stay picture-perfect.
The org-wide repos sit alongside profile assets and personal one-offs on JacobPEvans-personal; together, the two accounts host the public footprint. Older repo links redirect to their current owners.
One front door. Read the docs first.