Synaplan
Open-source AI platform for companies: self-hosted AI agents, GDPR-compliant chatbot widget, RAG knowledge base, WhatsApp and Outlook AI, MCP, multi-model routing. Docker, Kubernetes or hosted in Germ
Free toolkit for Scrum masters and agile teams — sprint planning, daily scrum, retrospectives, estimation, delivery metrics and team health. Runs in your browser; no sign-up.
BusinessTypeScript · JavaScriptGitHub @amrelharonyOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Single-user agile toolkit: 100+ tools, agent-controllable via in-app chat + MCP, cross-device cloud sync.
Translation pending
Loading the full README.
Read the full README ↗A free, public toolkit for Scrum masters and agile teams — sprint planning,
daily scrum, retrospectives, estimation, delivery metrics, team health,
prioritization and decision frameworks, whiteboarding — plus the free
"Agile at Work" comic book. About 80 tools are in the main navigation; some
30 more for neighbouring work (AI/LLM product management, security, SRE and
incident response, strategy frameworks) sit on a "More tools" shelf
(/more-tools) that any visitor can switch on.
Every tool works without an account: a visitor's work stays in their browser. The owner's sign-in adds cross-device cloud sync, the in-app agent and MCP.
Built with Next.js 14 (App Router), Zustand, Supabase, and Tailwind.
Five integrated subsystems, layered:
Access model — Public, browser-only tools; owner-only server.
AUTHORIZED_EMAILS, signed in with Google, with a verified email
(isOwnerUser in src/lib/auth/authorize.ts).
Owner-only: cloud and history sync, the agent's server path, MCP,
personal access tokens, the kudos/squads/sessions APIs and realtime
multiplayer./api/* route answers JSON 401 unauthenticated,
403 not_authorized | wrong_provider | email_unverified or
503 auth_unavailable | auth_unreachable (with retry-after) — never a
redirect. The pages in OWNER_ONLY_PAGES
(src/lib/auth/owner-routes.ts:
/settings/access-tokens, /settings/squads) redirect to sign-in or
/not-authorized. A non-owner's session cookies are expired, so they
carry on as a visitor.GET /api/auth/owner
(200 {owner:true}, else 401/403/503 JSON) confirms the owner before
anything owner-only starts. RLS on every user table is
auth.uid() = user_id.Cross-device cloud sync (owner) — Local-first. Every Zustand store and every
workspace entity (sprints, stories, whiteboard objects, etc.) writes to
localStorage first; a debounced pusher mirrors to Supabase. Realtime
subscriptions fan remote writes back to other open tabs. LWW on
updated_at for conflicts. Soft-deletes via deleted=true tombstones
for concurrent-device reconciliation.
See src/lib/sync/engine.ts.
Tool action registry — A typed action surface where every tool
exposes read/write/intent verbs through a singleton registry. The
registry produces tool schemas for both Claude tool-use and MCP
tools/list. ~102 actions wired today, growing.
See src/lib/actions/registry.ts.
In-app chat agent (owner) — A right-side sheet (Cmd/Ctrl+J) powered by GLM
(Zhipu) via OpenAI-compatible chat completions. Server proxy at
/api/agent/stream or browser-direct BYOK using the per-tool key in
the LLM settings store. Write actions pause for inline approval;
"approve all this session" opt-in available.
See src/app/api/agent/stream/route.ts.
MCP server (owner) — HTTP/SSE transport at /api/mcp for remote agents
(Claude Desktop, Claude Code, OpenClaw), plus a thin stdio relay
package (mcp-server/) that forwards to the deployed app. PAT auth
with scrypt-hashed bearer tokens. Per-token rate-limit bucket.
See src/app/api/mcp/route.ts.
npm install
cp .env.example .env.local # fill in the values listed below
npm run dev # http://localhost:3000
Required environment variables (.env.local):
NEXT_PUBLIC_SUPABASE_URL=https://<project>.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=eyJ...
SUPABASE_SERVICE_ROLE_KEY=eyJ... # server-only, for PAT resolution
[email protected] # comma-separated, lowercased
ANTHROPIC_API_KEY=sk-ant-... # optional; falls back to per-tool BYOK
The Supabase project needs migrations 0001–0006 applied:
npx supabase db push
| Command | Purpose |
|---|---|
npm run dev | Next.js dev server with HMR. |
npm run build | Production build. |
npm run start | Run the production build locally. |
npm run lint | ESLint over the project. |
npm run test | Vitest in watch mode. |
npm run test:run | Vitest one-shot (CI uses this). |
npm run pdf:worker | Copy the pdf.js worker to public/ (after bumping pdfjs-dist). |
Vercel-native. Auto-deploys from master to production.
Environment variables for production (set in the Vercel dashboard):
.env.local vars above.SUPABASE_SERVICE_ROLE_KEY is sensitive — store it as an Encrypted
Environment Variable.fra1 to keep the Edge middleware close to
the Supabase project (see vercel.json).Vercel Authentication ("Require Log In" under Deployment Protection)
must be off for the production domain — the site is public and the
owner-only surface is enforced by the in-app middleware. Keep it on for
Preview deployments (see the checklist below). Only master and preview/*
branches deploy at all (git.deploymentEnabled in vercel.json); see
RUNBOOK.md, "Vercel builds and cost".
The public "Owner sign in" button lets anyone start a Google sign-in, so:
signup_disabled instead of an
account. Confirm anonymous sign-ins are off.The comics live at /comics, and every story is /comics?ep=NN. See
RUNBOOK.md, "The Agile at Work comics".
After bumping pdfjs-dist, run npm run pdf:worker so the public worker the
whiteboard's PDF import loads matches the library version.
Mint a Personal Access Token at /settings/access-tokens, then either:
Claude Desktop (stdio relay):
{
"mcpServers": {
"agile-toolkit": {
"command": "agile-toolkit-mcp",
"env": {
"AGILE_TOOLKIT_PAT": "pat_...",
"AGILE_TOOLKIT_URL": "https://your-deployment.vercel.app"
}
}
}
}
Any HTTP/SSE MCP client:
curl -X POST https://your-deployment.vercel.app/api/mcp \
-H "Authorization: Bearer pat_..." \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"tools/list","id":1}'
Rate limit: 120 requests/minute per PAT.
/api/* route and the
OWNER_ONLY_PAGES require the owner (allowlisted Google account with a
verified email). API failures are JSON 401/403/503, never redirects.auth.uid() = user_id via RLS./.well-known/security.txt; /robots.txt keeps /api/,
/auth/, /settings/, /guest/ and /not-authorized out of the index.