Personal project: This was built to solve a specific problem for the author. It works for that purpose. It has not been tested for general deployment and is not actively maintained — use it as inspiration or a starting point, not a supported tool.
100% AI-generated: No code was written by hand. Every file was produced by Claude Code via the GSD workflow. The author is a non-programmer building personal tools with AI. PRs are welcome — if one arrives, Claude Code will review and merge it. Issues are unlikely to receive a response.
A self-hosted parent control panel for a children's AI chat service built on LibreChat. The problem it solves: giving kids safe, quota-controlled access to AI while letting a parent monitor usage, review conversations, and get automatically alerted when anything concerning happens — without having to babysit the chat manually. Because it's built on LibreChat, the underlying AI isn't locked in — you can use Claude, GPT-4, Gemini, or any other model LibreChat supports, and swap between them without touching the admin layer.
- Parent dashboard — full conversation logs, per-child usage analytics, and daily/monthly cost caps
- Safety alerts — automatic email notifications for jailbreak attempts, inappropriate prompts, and safety-rule violations
- Child presets — switchable AI personas (tutor, casual, drawing studio, image search) with age-appropriate guardrails enforced server-side
- Quota enforcement — daily and monthly message/cost limits per child; LibreChat is automatically paused when limits are hit
- Email digests — daily summaries and weekly reports delivered to the parent via Resend
- Image search — safe-search image lookup via a Pixabay MCP sidecar, available as a child-facing preset
- Chat frontend: LibreChat (self-hosted, Docker)
- Admin panel: Next.js (App Router, TypeScript)
- Database: MongoDB 7
- Auth: NextAuth.js + Cloudflare Access (no passwords to manage)
- Email: Resend
- Image search: Pixabay via custom MCP sidecar
Tip: Not sure where to start? Paste the link to this page into Claude, ChatGPT, or any AI assistant and ask it to walk you through the setup. These tools can read GitHub pages and guide you step by step.
This project is a custom admin layer on top of LibreChat. You'll need both running to use it.
- Self-host LibreChat following their docs. Note the URL and ensure the MongoDB instance is accessible.
- Clone this repo and copy
.env.local.exampleto.env.local. Fill in all required values. - MongoDB URI — point
MONGODB_URIat the same MongoDB instance LibreChat uses (or a separate one — the admin stores its own data alongside LibreChat's). - NextAuth — generate a secret with
openssl rand -base64 32and setNEXTAUTH_SECRET. SetNEXTAUTH_URLto the public URL of the admin panel. - Resend — create a free account at resend.com, verify a sending domain, and set
RESEND_API_KEY+RESEND_FROM_EMAIL. - Quota restart (optional) — to have the admin restart LibreChat automatically when quota limits are hit, set
LIBRECHAT_RESTART_URLandLIBRECHAT_RESTART_SECRETto a restart webhook on your LibreChat instance. The repo also has legacy support for Railway (RAILWAY_API_TOKENetc.) from when the author ran LibreChat there, but a cheap VPS running both services via Docker Compose is significantly less expensive and simpler long-term. - Run with
docker compose up --build -dornpm run devfor local development. - Lock down the admin panel — do not expose it to the internet without authentication. The author uses Cloudflare Access (free tier) to add a login gate before traffic reaches the server.