---
title: The Grimoire
description: Personal knowledge base — graymutt
published: true
date: 2026-04-19T04:25:33.085Z
tags: 
editor: markdown
dateCreated: 2026-01-21T13:19:48.685Z
---

<!-- HERO BLOCK -->
<div id="ng-hero" style="position:relative;width:100%;min-height:200px;background:linear-gradient(135deg,#060a0d 0%,#0a0f14 50%,#060a0d 100%);border:1px solid rgba(0,229,204,0.2);border-radius:10px;overflow:hidden;display:flex;align-items:center;justify-content:center;margin:0 0 2em 0;box-shadow:0 0 40px rgba(0,0,0,0.6),inset 0 0 60px rgba(0,229,204,0.03);">
  <canvas id="ng-canvas" style="position:absolute;top:0;left:0;width:100%;height:100%;"></canvas>
  <div style="position:relative;z-index:2;text-align:center;padding:2em;">
    <div style="font-family:'Cinzel',serif;font-size:2rem;font-weight:700;color:#00e5cc;text-shadow:0 0 20px rgba(0,229,204,0.5);letter-spacing:0.12em;margin-bottom:0.4em;">THE GRIMOIRE</div>
    <div style="font-family:'Share Tech Mono',monospace;font-size:0.8rem;color:rgba(0,229,204,0.5);letter-spacing:0.25em;text-transform:uppercase;">Personal Knowledge Vault — graymutt</div>
  </div>
</div>
<script>
(function(){var c=document.getElementById('ng-canvas'),h=document.getElementById('ng-hero');if(!c)return;var x=c.getContext('2d'),W,H,n=[];function r(){W=c.width=h.offsetWidth;H=c.height=h.offsetHeight;}function i(){n=[];for(var k=0;k<55;k++)n.push({x:Math.random()*W,y:Math.random()*H,vx:(Math.random()-.5)*.3,vy:(Math.random()-.5)*.3,r:Math.random()*1.8+.6,p:Math.random()*Math.PI*2});}function d(){var T='rgba(0,229,204,';x.clearRect(0,0,W,H);var t=Date.now()/1000;for(var a=0;a<n.length;a++){for(var b=a+1;b<n.length;b++){var dx=n[a].x-n[b].x,dy=n[a].y-n[b].y,ds=Math.sqrt(dx*dx+dy*dy);if(ds<110){x.beginPath();x.moveTo(n[a].x,n[a].y);x.lineTo(n[b].x,n[b].y);x.strokeStyle=T+(1-ds/110)*.25+')';x.lineWidth=.5;x.stroke();}}}for(var a=0;a<n.length;a++){var p=n[a],f=.5+.5*Math.sin(t*1.5+p.p),g=x.createRadialGradient(p.x,p.y,0,p.x,p.y,p.r*6);g.addColorStop(0,T+(.08+.12*f)+')');g.addColorStop(1,T+'0)');x.beginPath();x.arc(p.x,p.y,p.r*6,0,Math.PI*2);x.fillStyle=g;x.fill();x.beginPath();x.arc(p.x,p.y,p.r,0,Math.PI*2);x.fillStyle=T+(.4+.5*f)+')';x.fill();p.x+=p.vx;p.y+=p.vy;if(p.x<0||p.x>W)p.vx*=-1;if(p.y<0||p.y>H)p.vy*=-1;}requestAnimationFrame(d);}r();i();d();window.addEventListener('resize',function(){r();i();});})();
</script>

---

## 🔮 Netgrimoire — Homelab

| Grimoire | Badge | Purpose |
|----------|-------|---------|
| 🟢 [Netgrimoire](/Netgrimoire/Overview) | `netgrimoire-badge.png` | Core homelab — service catalog, host inventory, standards |
| 🏰 [Keystone Grimoire](/Netgrimoire/Keystone-Grimoire/Overview) | `keystone-badge.png` | Architecture — network, Caddy, Docker Swarm, DNS, mail |
| 🗄️ [Vault Grimoire](/Netgrimoire/Vault-Grimoire/Overview) | `vault-badge.png` | Storage & backup — ZFS, Kopia, NFS, offsite replication |
| 🛡️ [Ward Grimoire](/Netgrimoire/Ward-Grimoire/Overview) | `ward-badge.png` | Security — OPNsense, CrowdSec, auth, VPN, blocklists |
| 🔮 [Watch Grimoire](/Netgrimoire/Watch-Grimoire/Overview) | `watch-badge.png` | Monitoring — Kuma, Beszel, Grafana, alerts, logs |
| 🤖 [Gremlin Grimoire](/Netgrimoire/Gremlin-Grimoire/Overview) | `gremlin-badge.png` | Local AI — Ollama, Open WebUI, n8n, Qdrant, workflows |
| 💀 [Shadow Grimoire](/Netgrimoire/Shadow-Grimoire/Overview) | `shadow-badge.png` | Acquisition — Usenet, torrents, arr stack, indexers |
| 🌿 [Green Grimoire](/Netgrimoire/Green-Grimoire/Overview) | `green-badge.png` | Adult media — Stash, Jellyfinx, Namer, Whisparr |
| 🎒 [Pocket Grimoire](/Netgrimoire/Pocket-Grimoire/Overview) | `pocket-badge.png` | Portable lab — laptop, offline-first, travel vault node |

---

## 🌐 Periphery — Beyond the Lab

| Section | Badge | Purpose |
|---------|-------|---------|
| 👨‍👩‍👧 [PNC Harris](/Periphery/PNC-Harris/Overview) | `pncharris-badge.png` | Family services — Immich, Nextcloud, Mealie, Vikunja |
| 🐠 [PNC Fish & More](/Periphery/PNC-Fish/Overview) | `pncfish-badge.png` | Saltwater fish & coral store — IT, ops, accounting |
| 💼 [Work](/Periphery/Work/Overview) | — | Cisco switching, NTP, upgrades, Ducky automation |

---

## ⚙️ Quick Reference

| | |
|---|---|
| 📋 [Service Catalog](/Netgrimoire/Service-Catalog) | All services — status, host, URL, grimoire |
| 🏗️ [Docker Swarm Template](/Netgrimoire/Keystone-Grimoire/Docker/Swarm-Template) | Standard YAML, label rules, volume paths |
| 📄 [Service Doc Template](/Netgrimoire/Conventions/Service-Doc-Template) | Template for new service docs |
| 📖 [Doc Standards](/Netgrimoire/Conventions/Doc-Standards) | Structure, naming, diagram, git workflow |
| 🔍 [Audit Reports](/Netgrimoire/Audits/README) | Gremlin-generated weekly YAML audits |

---

## 🗺️ Structure

```
wiki/
├── home.md
├── Netgrimoire/                 ← homelab spine + all grimoires
│   ├── Keystone-Grimoire/       ← architecture
│   ├── Vault-Grimoire/          ← storage & backup
│   ├── Ward-Grimoire/           ← security
│   ├── Watch-Grimoire/          ← monitoring
│   ├── Gremlin-Grimoire/        ← AI stack
│   ├── Shadow-Grimoire/         ← acquisition
│   ├── Green-Grimoire/          ← adult media
│   ├── Pocket-Grimoire/         ← portable lab
|   └── Gremlin/                 - Local AI and Auutomation
└── Periphery/                   ← non-homelab
    ├── PNC-Harris/              ← family
    ├── PNC-Fish/                ← business
    └── Work/                    ← Cisco / networking
```

---

*Last updated: April 2026 · Source: [Forgejo](https://git.netgrimoire.com) · graymutt*
