1.5 KiB
1.5 KiB
Upstream Dependencies
Portal
- Next.js 15 (App Router)
- TypeScript
- Axios (API calls)
- WebSocket console (
TerminalView/ServerConsole) - Multipart
FormDataupload
API
- Node.js (ESM)
- Express
- Raw
http.requestfor upload proxy (notfetch) - Prisma (DB ORM)
- JWT token auth
- Redis (agent telemetry cache)
Agent
- Go
- Runtime root sandboxing (
internal/files) - Atomic file writes (
os.Rename) .zlh_metadata.jsonprovenance tracking- Shadow backup system (
.zlh-shadow) - PTY-backed console over WebSocket
- Mod management endpoints
- Agent update system (versioned, SHA-verified)
Modrinth API
Used for mod resolution and search.
- Base:
api.modrinth.com/v2 - Rate limit: 300 req/min
- Requires
User-Agentheader - No API key required for public endpoints
- SHA512 provided on all artifacts (SHA1 fallback)
Agent host allowlist:
cdn.modrinth.com— artifact downloadsapi.modrinth.com— search/resolve (API-level)
Artifact Store
Location (VM filesystem): /opt/zlh/zpacks/minecraft/
Loader coverage:
- Vanilla, Paper, Purpur, Forge, Quilt, NeoForge
No external reverse proxy required for internal upload path.
Repo Registry
| Repo | Role |
|---|---|
zlh-grind |
Architecture alignment, session logs, constraints, open threads |
zlh-api |
Control plane (Node + Express) |
zlh-portal |
Frontend (Next.js) |
zlh-agent |
Go runtime inside containers |
knowledge-base |
Canonical architecture docs |