claude-homelab
Health Warn
- No license — Repository has no license file
- Description — Repository has a description
- Active repo — Last push 0 days ago
- Community trust — 17 GitHub stars
Code Pass
- Code scan — Scanned 12 files during light audit, no dangerous patterns found
Permissions Pass
- Permissions — No dangerous permissions requested
This tool is a monorepo of plugins and agents that helps manage homelab infrastructure—such as media servers, monitoring, and document management—directly from within Claude Code, Codex, or Gemini.
Security Assessment
Risk: Medium. The tool is fundamentally designed to interact with your local infrastructure and execute shell commands. It handles highly sensitive data, specifically storing all your service API keys and URLs in a local `.env` file. While the code scan found no hardcoded secrets or dangerous patterns, and the tool enforces strict file permissions (`chmod 600`), it does request network access to your internal homelab services. Additionally, the installation guide recommends piping a remote script directly to bash (`curl | bash`), which is a common attack vector if the repository is ever compromised.
Quality Assessment
The project is actively maintained, with its most recent push occurring today. It has a modest but growing level of community trust, indicated by 17 GitHub stars. However, it completely lacks an open-source license. This means that, strictly speaking, all rights are reserved by the creator, and you do not have formal legal permission to use, modify, or distribute the code.
Verdict
Use with caution. The code itself appears safe and uses good local security practices, but you should inspect the bash installer before running it, and be aware of the missing software license.
Comprehensive Claude Code skills and agents for homelab service management - media automation, infrastructure monitoring, document management, and more
Claude Homelab
Current release: 1.4.0.
Homelab plugin hub for Claude Code, Codex, and Gemini. This repository is the source of truth for the homelab-core plugin, bundled skill-only integrations, agents, commands, and shared credential bootstrapping.
Overview
claude-homelab serves three roles at once:
- The
homelab-coreplugin published through the Claude marketplace - The canonical mono-repo for 16 bundled skill-only service integrations
- The source for Codex and Gemini extension manifests that mirror the same workflow surface
The repo root is the plugin root. Do not edit generated copies in ~/.claude/ or ~/.claude/plugins/cache/ directly.
Installation
Claude marketplace
/plugin marketplace add jmagar/claude-homelab
/plugin install homelab-core @jmagar-claude-homelab
After install, Claude Code downloads the plugin into ~/.claude/plugins/cache/. No symlinks are created on this path.
Bash / symlink install
curl -sSL https://raw.githubusercontent.com/jmagar/claude-homelab/main/scripts/install.sh | bash
Or, if you already have the repo cloned:
./scripts/install.sh
The installer:
- Checks prerequisites (
git,jq,curl) - Clones the repo to
~/claude-homelab(or pulls if it exists) - Runs
setup-creds.sh— creates~/.claude-homelab/.envfrom.env.examplewithchmod 600 - Runs
setup-symlinks.sh— symlinks skills, agents, and commands into~/.claude/ - Runs
verify.sh— confirms every symlink and required file is in place - Prints next steps
Credential Model
All credentials for every service live in a single file:
~/.claude-homelab/.env
This file is created from .env.example at install time and is never committed. Set it up interactively after install:
# Interactive wizard (preferred)
# Open Claude Code and run:
/homelab-core:setup
# Or configure manually
$EDITOR ~/.claude-homelab/.env
Security requirements:
~/.claude-homelab/.envmust havechmod 600(owner read/write only)- Never commit
.env— it is gitignored - Never log credentials, even in debug mode
- Use
.env.exampleas the template (tracked in git, placeholder values only)
All service scripts load credentials via scripts/load-env.sh:
source "${CLAUDE_PLUGIN_ROOT:-$HOME/claude-homelab}/scripts/load-env.sh"
load_env_file || exit 1
validate_env_vars "SERVICE_URL" "SERVICE_API_KEY"
Environment Variable Reference
Variables are grouped by service. Copy .env.example to ~/.claude-homelab/.env and replace placeholder values.
Media
| Variable | Required | Description |
|---|---|---|
PLEX_URL |
yes | Plex server base URL |
PLEX_TOKEN |
yes | Plex authentication token |
OVERSEERR_URL |
yes | Overseerr base URL (skill) |
OVERSEERR_API_KEY |
yes | Overseerr API key (skill) |
RADARR_URL |
yes | Radarr base URL |
RADARR_API_KEY |
yes | Radarr API key |
RADARR_DEFAULT_QUALITY_PROFILE |
no | Default quality profile ID (default: 1) |
SONARR_URL |
yes | Sonarr base URL |
SONARR_API_KEY |
yes | Sonarr API key |
SONARR_DEFAULT_QUALITY_PROFILE |
no | Default quality profile ID (default: 1) |
PROWLARR_URL |
yes | Prowlarr base URL |
PROWLARR_API_KEY |
yes | Prowlarr API key |
TAUTULLI_URL |
yes | Tautulli base URL |
TAUTULLI_API_KEY |
yes | Tautulli API key |
Downloads
| Variable | Required | Description |
|---|---|---|
SABNZBD_URL |
yes | SABnzbd base URL |
SABNZBD_API_KEY |
yes | SABnzbd API key |
QBITTORRENT_URL |
yes | qBittorrent WebUI URL |
QBITTORRENT_USERNAME |
yes | qBittorrent username |
QBITTORRENT_PASSWORD |
yes | qBittorrent password |
Infrastructure
| Variable | Required | Description |
|---|---|---|
UNRAID_SERVER1_NAME |
yes | Display name for first Unraid server |
UNRAID_SERVER1_URL |
yes | Unraid GraphQL endpoint (skill) |
UNRAID_SERVER1_API_KEY |
yes | Unraid API key (skill) |
UNRAID_SERVER2_NAME |
no | Display name for second Unraid server |
UNRAID_SERVER2_URL |
no | Second Unraid GraphQL endpoint |
UNRAID_SERVER2_API_KEY |
no | Second Unraid API key |
UNIFI_URL |
yes | UniFi controller URL (skill) |
UNIFI_USERNAME |
yes | UniFi username |
UNIFI_PASSWORD |
yes | UniFi password |
UNIFI_SITE |
no | UniFi site name (default: default) |
TAILSCALE_API_KEY |
yes | Tailscale API key |
TAILSCALE_TAILNET |
yes | Tailscale tailnet name or - |
ZFS_HOST |
yes | Host where ZFS commands run |
SWAG_HOST |
yes | SWAG reverse proxy host |
SWAG_CONTAINER_NAME |
no | SWAG container name (default: swag) |
SWAG_APPDATA_PATH |
no | SWAG appdata path |
SWAG_COMPOSE_PATH |
no | SWAG compose file path |
Utilities and Document Management
| Variable | Required | Description |
|---|---|---|
LINKDING_URL |
yes | Linkding bookmark manager URL |
LINKDING_API_KEY |
yes | Linkding API token |
MEMOS_URL |
yes | Memos server URL |
MEMOS_API_TOKEN |
yes | Memos API token |
BYTESTASH_URL |
yes | ByteStash snippet manager URL |
BYTESTASH_API_KEY |
yes | ByteStash API key |
PAPERLESS_URL |
yes | Paperless-ngx base URL |
PAPERLESS_API_TOKEN |
yes | Paperless-ngx API token |
RADICALE_URL |
yes | Radicale CalDAV/CardDAV URL |
RADICALE_USERNAME |
yes | Radicale username |
RADICALE_PASSWORD |
yes | Radicale password |
GOTIFY_URL |
yes | Gotify push notification URL (skill) |
GOTIFY_TOKEN |
yes | Gotify app token (skill) |
Research and Dev Tools
| Variable | Required | Description |
|---|---|---|
NOTEBOOKLM_COOKIE |
yes | NotebookLM session cookie |
NOTEBOOKLM_AUTH_JSON |
no | Full auth JSON blob (alternative to cookie) |
NOTEBOOKLM_LOG_LEVEL |
no | Log verbosity (default: INFO) |
GITHUB_TOKEN |
yes | GitHub personal access token (gh-address-comments) |
GLANCES_URL |
no | Glances web interface URL |
GLANCES_USERNAME |
no | Glances username (if auth enabled) |
GLANCES_PASSWORD |
no | Glances password (if auth enabled) |
MCP Server Variables
Each external MCP plugin has its own block of server-config vars. See .env.example for the full list. Key patterns:
| Pattern | Description |
|---|---|
*_MCP_TOKEN |
Bearer token for MCP server auth |
*_MCP_HOST |
Bind host (default: 0.0.0.0) |
*_MCP_PORT |
Listen port |
*_MCP_TRANSPORT |
Transport protocol (streamable-http or http) |
*_MCP_NO_AUTH |
Disable auth (set true for local-only installs) |
*_MCP_ALLOW_DESTRUCTIVE |
Allow destructive operations (default: false) |
ALLOW_DESTRUCTIVE |
Shared fallback for MCP repos that read this directly |
ALLOW_YOLO |
Shared fallback — skip confirmation prompts |
DOCKER_NETWORK |
Shared Docker network name |
LOG_LEVEL |
Shared log verbosity |
Commands
Root Commands
| Command | Argument | Description |
|---|---|---|
/check |
[instructions] |
Read the latest screenshot from ~/Pictures/Screenshots and describe it. Pass optional instructions (e.g., "extract the text", "what error is shown"). |
/deploy |
[plugin-name] |
Build and start MCP plugin containers via docker compose up --build -d. Deploys all external plugins by default. Pass a plugin name to deploy only that one. Reads compose files from ~/.claude/plugins/cache/claude-homelab/<name>/<version>/. Skips tests/ subdirs. Reports a status table with notes on failures. |
/quick-push |
— | Standardized commit-and-push workflow. Checks branch (creates feature branch if on main), bumps version in all manifests, updates CHANGELOG.md, stages all changes, commits with co-authorship signature, pushes, then invokes save-to-md and writes Neo4j commit graph entries. |
/save-to-md |
[output-path] |
Document the full session as a Markdown file. Defaults to docs/sessions/YYYY-MM-DD-description.md. Embeds the file in Qdrant via Axon. Creates Neo4j entities and relations for files, services, features, and bugs touched in the session. |
/validate-plan |
<plan-file-or-text> |
Audit a technical implementation plan against homelab standards. Checks for exposed secrets, correct credential loading pattern (scripts/load-env.sh), required docs (README.md, SKILL.md, references), confirm=True gate on destructive actions, and standard directory structure. Outputs a compliance table and required changes list. |
/homelab:* Commands
| Command | Description |
|---|---|
/homelab:system-resources |
Snapshot CPU, RAM, temperatures, and load average. Identifies high-CPU processes, memory pressure, temperature anomalies, and provides optimization recommendations. Uses uptime, free, top, and sensors. |
/homelab:docker-health |
Audit all Docker containers. Flags unexpected exits, restart loops, unhealthy containers, and resource over-use (CPU > 80%, memory > 90%). Provides per-container recommendations. |
/homelab:disk-space |
Analyze disk usage across all mount points. Identifies filesystems above 80% or 95% usage, space hogs, log rotation issues, Docker volume orphans, and suggests cleanup targets. |
/homelab:zfs-health |
Full ZFS health check. Reports pool state (ONLINE/DEGRADED/FAULTED), device errors, checksum errors, resilvering, scrub status, ARC hit ratio, snapshot accumulation, and per-dataset usage. Outputs a health score and prioritized action list. |
/notebooklm:* Commands
| Command | Argument | Description |
|---|---|---|
/notebooklm:create |
"Title" [url1] [url2] ... |
Create a new NotebookLM notebook. Optionally add URLs, PDFs, Google Docs, YouTube links, audio, video, or image files as sources. Reports the new notebook ID. |
/notebooklm:ask |
"question" |
Chat with NotebookLM about the current notebook. Options: --json for source citations, -n <id> to target a specific notebook. |
/notebooklm:source |
add <url|file> | list | wait <id> | fulltext <id> | add-research "query" |
Manage notebook sources. Add a URL or file, list current sources, wait for a source to finish processing, retrieve full text, or trigger web research. Supports -n <id> for targeting. |
/notebooklm:generate |
<type> ["instructions"] |
Generate an artifact. Types: audio, video, quiz, report, mind-map, flashcards, slide-deck, infographic, data-table. Each type has format, length, style, and difficulty options. |
/notebooklm:download |
<type> [output-path] |
Download a generated artifact to a local file. Supports --all and --format json|md|html. Artifact must be fully generated first. |
/notebooklm:list |
[notebooks|sources|artifacts] |
List notebooks (default), sources in the current notebook, or generated artifacts. Presents results in a table with IDs, names, and status. |
/notebooklm:research |
"query" [--mode fast|deep] |
Run web research and import results as notebook sources. Fast mode: 30 seconds to 2 minutes. Deep mode: 15 to 30+ minutes, use --no-wait and follow up with notebooklm research wait --import-all. |
/notebooklm:generate Type Reference
| Type | Key Options | Approximate Time |
|---|---|---|
audio (podcast) |
--format deep-dive|brief|critique|debate, --length short|default|long |
10–20 min |
video |
--format explainer|brief, --style auto|classic|whiteboard|kawaii|... |
15–45 min |
slide-deck |
--format detailed|presenter, --length default|short |
5–15 min |
infographic |
--orientation landscape|portrait|square, --detail concise|standard|detailed |
5–15 min |
report |
--format briefing-doc|study-guide|blog-post|custom |
5–15 min |
mind-map |
— | Instant |
data-table |
description required | 5–15 min |
quiz |
--difficulty easy|medium|hard, --quantity fewer|standard|more |
5–15 min |
flashcards |
--difficulty easy|medium|hard, --quantity fewer|standard|more |
5–15 min |
All types support -s/--source, --language, --json, and --retry N.
Skills
18 skill directories live under skills/. Each is an independent unit with a SKILL.md (Claude-facing) and typically a README.md, scripts/, and references/ directory.
Core Skills (2)
| Skill | Invocation | Purpose |
|---|---|---|
homelab-setup |
/homelab-core:setup |
Interactive credential setup wizard. Guides through configuring ~/.claude-homelab/.env for each service the user runs. Creates the file from .env.example if missing. |
homelab-health |
/homelab-core:health |
Unified service health dashboard. Runs scripts/check-health.sh to curl-check every configured service and outputs a JSON health summary. |
Service Skills (16)
| Skill | Category | Purpose |
|---|---|---|
plex |
media | Browse Plex libraries, search media, check active sessions and streams, view recently added content |
radarr |
media | Manage Radarr movie library — search, add, monitor, and track download status |
sonarr |
media | Manage Sonarr TV library — search, add series, monitor seasons and episodes |
prowlarr |
media | Manage Prowlarr indexers — search across all indexers, test connectivity, view stats |
tautulli |
media | Query Tautulli play history, user activity, library stats, and notification logs |
sabnzbd |
downloads | Monitor SABnzbd queue, speed, and history; manage download jobs |
qbittorrent |
downloads | Manage qBittorrent torrents — list, add, pause, resume, and remove downloads |
tailscale |
infrastructure | Query Tailscale network status, list devices, check connectivity, and manage ACLs |
zfs |
infrastructure | ZFS pool and dataset management — status, snapshots, scrubs, and space reporting |
linkding |
utilities | Manage Linkding bookmarks — search, add, tag, and organize saved links |
memos |
utilities | Create and query Memos notes — add quick notes, search by tag or content |
bytestash |
utilities | Manage ByteStash code snippets — save, search, and retrieve frequently-used code |
paperless-ngx |
utilities | Search and manage Paperless-ngx document archive — query by content, tag, or correspondent |
radicale |
utilities | Interact with Radicale CalDAV/CardDAV — list calendars and contacts, query events |
notebooklm |
research | NotebookLM CLI wrapper for deep AI research, source management, Q&A, and artifact generation |
gh-address-comments |
dev-tools | Address GitHub PR review comments — fetch, triage, and resolve review feedback |
Agents
notebooklm-specialist
File: agents/notebooklm-specialist.md
Color: magenta
Tools: Bash, Read, Write, SendMessage
Memory: user (persistent across sessions)
The notebooklm-specialist is a research analyst agent for deep AI-powered research workflows. It is spawned by an orchestrator with a pre-created notebook ID, output directory, and research brief. The agent:
- Starts deep web research immediately (
notebooklm source add-research --mode deep --no-wait) — this is always the first action since it takes 15–30+ minutes - Adds source URLs relayed from the orchestrator as they arrive (max 50 per notebook)
- Waits for deep research to complete and auto-imports discovered sources
- Conducts an extensive Q&A session (10–20 questions across overview, comparison, technical, critical, practical, and future-directions categories)
- Uses
--jsonflag to capture citation data with every answer - Writes findings to
{output_dir}/findings/notebooklm-findings.md - Signals completion to the orchestrator via
SendMessage
Critical constraint: Always use -n <notebook_id> or --notebook <notebook_id>. Never use notebooklm use <id> — that command modifies shared state and is unsafe in parallel workflows.
The agent maintains persistent memory of effective research query patterns, timing benchmarks, and NotebookLM-specific quirks across sessions.
Marketplace Scope
The .claude-plugin/marketplace.json catalog covers 27 plugins total.
1 core plugin
| Plugin | Source | Description |
|---|---|---|
homelab-core |
this repo | Agents, commands, setup/health skills, and the bundled skill library |
10 external MCP repos
| Plugin | Repo | Category |
|---|---|---|
overseerr-mcp |
jmagar/overseerr-mcp |
media |
unraid-mcp |
jmagar/unraid-mcp |
infrastructure |
unifi-mcp |
jmagar/unifi-mcp |
infrastructure |
gotify-mcp |
jmagar/gotify-mcp |
utilities |
swag-mcp |
jmagar/swag-mcp |
infrastructure |
synapse-mcp |
jmagar/synapse-mcp |
infrastructure |
arcane-mcp |
jmagar/arcane-mcp |
infrastructure |
syslog-mcp |
jmagar/syslog-mcp |
infrastructure |
plugin-lab |
jmagar/plugin-lab |
dev-tools |
axon |
jmagar/axon |
research |
16 bundled skill-only plugins
bytestash, gh-address-comments, linkding, memos, notebooklm, paperless-ngx, plex, prowlarr, qbittorrent, radarr, radicale, sabnzbd, sonarr, tailscale, tautulli, zfs
These are listed individually in the marketplace catalog so users can discover them, but they are sourced from ./skills/* within this repo. A bundled skill graduates to its own external repo when it gains additional plugin surface area (agents, commands, hooks, MCP servers, output styles, or channels).
Symlink Architecture
The bash install path creates symlinks from this repo into ~/.claude/ so Claude Code discovers all skills, agents, and commands. The plugin path uses ~/.claude/plugins/cache/ instead and requires no symlinks.
~/.claude/
├── agents/
│ └── notebooklm-specialist.md → ~/claude-homelab/agents/notebooklm-specialist.md
├── skills/
│ ├── bytestash/ → ~/claude-homelab/skills/bytestash/
│ ├── gh-address-comments/ → ~/claude-homelab/skills/gh-address-comments/
│ ├── homelab-health/ → ~/claude-homelab/skills/homelab-health/
│ ├── homelab-setup/ → ~/claude-homelab/skills/homelab-setup/
│ ├── linkding/ → ~/claude-homelab/skills/linkding/
│ ├── memos/ → ~/claude-homelab/skills/memos/
│ ├── notebooklm/ → ~/claude-homelab/skills/notebooklm/
│ ├── paperless-ngx/ → ~/claude-homelab/skills/paperless-ngx/
│ ├── plex/ → ~/claude-homelab/skills/plex/
│ ├── prowlarr/ → ~/claude-homelab/skills/prowlarr/
│ ├── qbittorrent/ → ~/claude-homelab/skills/qbittorrent/
│ ├── radarr/ → ~/claude-homelab/skills/radarr/
│ ├── radicale/ → ~/claude-homelab/skills/radicale/
│ ├── sabnzbd/ → ~/claude-homelab/skills/sabnzbd/
│ ├── sonarr/ → ~/claude-homelab/skills/sonarr/
│ ├── tailscale/ → ~/claude-homelab/skills/tailscale/
│ ├── tautulli/ → ~/claude-homelab/skills/tautulli/
│ └── zfs/ → ~/claude-homelab/skills/zfs/
└── commands/
├── check.md → ~/claude-homelab/commands/check.md
├── deploy.md → ~/claude-homelab/commands/deploy.md
├── quick-push.md → ~/claude-homelab/commands/quick-push.md
├── save-to-md.md → ~/claude-homelab/commands/save-to-md.md
├── validate-plan.md → ~/claude-homelab/commands/validate-plan.md
├── homelab/ → ~/claude-homelab/commands/homelab/
└── notebooklm/ → ~/claude-homelab/commands/notebooklm/
~/.claude-homelab/
├── .env # Credentials (chmod 600, never committed)
└── load-env.sh # Copied from scripts/load-env.sh at install
How Slash Commands Work
Slash commands are created by placing .md files in ~/.claude/commands/. Claude Code discovers them automatically.
commands/proxy.md→/proxycommands/homelab/docker-health.md→/homelab:docker-health
The directory name becomes the namespace prefix. The file name becomes the command after the colon.
Configuration System
Command Files (commands/)
Each command is a Markdown file with a YAML frontmatter block:
---
description: Short description shown in autocomplete
argument-hint: <required> [optional]
allowed-tools: Bash(tool:*), mcp__plugin_name__tool
---
Task instruction using $ARGUMENTS
Key fields:
description— shown in autocomplete menuargument-hint— hint text for expected argumentsallowed-tools— pre-approved tools (no permission prompts at runtime)$ARGUMENTS— replaced with user input after the command name!`command`— dynamic context injection: runs the shell command and injects its output at load time
Prompts Sidecar System (prompts/)
Command prompt bodies can be extracted to .toml sidecar files in prompts/, keeping command metadata (frontmatter, description) separate from the prompt content. When populated, the directory mirrors the commands/ structure:
prompts/check.toml— prompt body for/checkprompts/homelab/docker-health.toml— prompt body for/homelab:docker-health
Format:
name = "command-name"
description = "Short description"
prompt = """
Prompt body with instructions and dynamic context injection.
"""
The prompts/ directory is not present by default. Create it if you extract prompts out of command .md files.
Output Styles (output-styles/)
The output-styles/ directory is reserved for custom response format definitions. It is currently empty (.gitkeep placeholder). Add output style files here when commands need to enforce a specific response structure.
Development
Adding a New Service Skill
Create the skill directory:
mkdir -p skills/service-name/{scripts,references,examples}Create
SKILL.mdwith frontmatter (name,description), a mandatory invocation section, command documentation, and workflow decision trees.Create
README.mdfor user-facing setup instructions.Implement scripts in
scripts/. All scripts must:- Use
source "$REPO_ROOT/scripts/load-env.sh"for credentials - Return JSON output
- Handle errors gracefully
- Support
--help
- Use
Add reference docs in
references/(api-endpoints.md,quick-reference.md,troubleshooting.md).Create the symlink (bash path):
ln -sf ~/claude-homelab/skills/service-name ~/.claude/skills/service-nameOr re-run
./scripts/setup-symlinks.shto pick it up automatically.Add the skill to the marketplace catalog if it should be discoverable:
- Edit
.claude-plugin/marketplace.json - Add a
bundledentry pointing to./skills/service-name
- Edit
Update this README's Skills table.
Adding a New Command
Single command (/new-command):
touch commands/new-command.md
ln -sf ~/claude-homelab/commands/new-command.md ~/.claude/commands/new-command.md
Namespaced command (/service:action):
mkdir -p commands/service-name
touch commands/service-name/action.md
ln -sf ~/claude-homelab/commands/service-name ~/.claude/commands/service-name
Credential Pattern
All scripts must source scripts/load-env.sh (see Credential Model above for the full pattern and variable naming conventions).
Verification
Run after any structural change:
./scripts/verify.sh
The verify script checks:
- All required symlinks exist and point to valid targets
~/.claude-homelab/.envexists
Additional checks:
# Run all Justfile validation targets
just validate
# Spot-check section headers across key docs
rtk rg -n "^## " README.md AGENTS.md CLAUDE.md
Repository Layout
agents/ Top-level specialist agents
commands/ Slash command definitions (.md files)
commands/homelab/ /homelab:* command definitions
commands/notebooklm/ /notebooklm:* command definitions
docs/ Session logs and reference documentation
docs/references/ Shared reference docs (security-patterns.md)
hooks/ Reserved for future Claude Code hook definitions
output-styles/ Reserved for custom response format definitions
scripts/ Install, setup, credential loading, and verification helpers
skills/ 18 service and core skill directories
.claude-plugin/ Claude marketplace manifest (plugin.json, marketplace.json)
.codex-plugin/ Codex plugin manifest
gemini-extension.json Gemini extension manifest
AGENTS.md Repo-wide development instructions
CLAUDE.md Claude-facing project instructions
CHANGELOG.md Release history
.env.example Shared credential template (tracked, no secrets)
Justfile Validation and maintenance recipes
Related Files
AGENTS.md— canonical development and repo-structure guidanceCLAUDE.md— Claude-facing project instructions including symlink architecture, command format, and skill development workflow.env.example— shared credential template for all 16 services and 10 MCP repos.claude-plugin/marketplace.json— marketplace source of truth (27 plugin entries).claude-plugin/plugin.json—homelab-coreplugin manifestCHANGELOG.md— release historydocs/references/security-patterns.md— reusable patterns for input sanitization, injection prevention, and API key protection
Related plugins
| Plugin | Category | Description |
|---|---|---|
| overseerr-mcp | media | Search movies and TV shows, submit requests, and monitor failed requests via Overseerr. |
| unraid-mcp | infrastructure | Query, monitor, and manage Unraid servers: Docker, VMs, array, parity, and live telemetry. |
| unifi-mcp | infrastructure | Monitor and manage UniFi devices, clients, firewall rules, and network health. |
| gotify-mcp | utilities | Send and manage push notifications via a self-hosted Gotify server. |
| swag-mcp | infrastructure | Create, edit, and manage SWAG nginx reverse proxy configurations. |
| synapse-mcp | infrastructure | Docker management (Flux) and SSH remote operations (Scout) across homelab hosts. |
| arcane-mcp | infrastructure | Manage Docker environments, containers, images, volumes, networks, and GitOps via Arcane. |
| syslog-mcp | infrastructure | Receive, index, and search syslog streams from all homelab hosts via SQLite FTS5. |
| plugin-lab | dev-tools | Scaffold, review, align, and deploy homelab MCP plugins with agents and canonical templates. |
| axon | research | Self-hosted web crawl, ingest, embed, and RAG pipeline with MCP tooling. |
License
MIT
Reviews (0)
Sign in to leave a review.
Leave a reviewNo results found