killBottleneck is a self-hosted visual goals and process mapping application designed for collaboration between people and AI agents, presenting projects, companies, and their processes graphically. The project is in public beta; the cloud version and the self-hosted version are the same application, and the current focus is on testing self-hosted installation, reverse proxy, own SMTP, and upgrades.
Purpose
- Provides goal maps for individuals or teams: nodes, connections, statuses, notes, support for multiple maps per user, goal comments, sharing with colleagues (read/edit), public maps, and export as image or PDF.
- Uses the "My Day" panel to centrally view overdue items, today's items, items within a week, items blocking others, and more, and can export a portrait PNG (the full version includes task names; the anonymous version hides names for social media).
- Time tracking: top bar timer, timers on each task and goal, left-side time tracking panel, the "Time Used" dialog in the user menu, client registration (project -> client), and timers forgotten to be stopped automatically stop after 12 hours. Opening the same instance on a phone automatically switches to a simplified view where you can check off today's tasks, add tasks, read messages, and at any time switch back to the full view and add it to the home screen.
Main capabilities
- Without AI, map editing, sharing, export, time tracking, notifications, time zones and recurring templates, data backup, teams and registration, Google login, attachments, SMTP email, HTTPS external access, and updates are fully usable.
- An optional AI assistant is located in the map sidebar: it can plan the day together (morning briefing, evening planning), organize notes from photos/PDFs/voice notes, draft a project through a few questions, prepare for meetings, review the week, and host team meetings; it reads the map itself, and all changes wait for confirmation in the form of cards. In addition, there is a "magic wand" on nodes (substeps, milestones, KPIs, risks), AI project summaries, and daily encouragement for "My Day."
- AI is switched via KB_AI_PROVIDER in .env: openai (any OpenAI-compatible API; KB_AI_URL, KB_AI_TOKEN, KB_AI_MODEL can be set, and voice notes are transcribed by the same service); api (a remote service compatible with the killBottleneck API contract); ollama (local models, data does not leave the network); custom (a custom endpoint following the same contract). The assistant can use a model on its own (KB_CHAT_), reading maps requires a vision model (KB_VISION_), and voice notes require OpenAI-shaped speech-to-text service (KB_TRANSCRIBE_*). When using AI, map data is sent to the selected endpoint; when not configured by default, data does not leave the server.
- Daily AI encouragement is generated by cron in the morning (KB_SUMMARY_HOUR defaults to 6), only for accounts that have logged in recently (KB_SUMMARY_ACTIVE_DAYS defaults to 14, 0=everyone); a smaller and faster model can also be configured separately for summaries.
- Built-in MCP server (mcp/) that can connect AI assistants to your own instance, enabling map building, batch editing, and checking off completion through conversation. Create an API key in the app (read-write or read-only scope); the token is shown only once, and it is recommended to set an expiration and revoke it promptly. The npm package name is killbottleneck-mcp, and it can be run directly with npx or from the local repository. It supports registration via Claude Code commands or Claude Desktop configuration. There are 20 tools in total, covering map create/read/update/delete, people, portfolios, organizational structure, calendar events and scheduled reminders, as well as create/read/update/delete and run records for rules and rule templates. Each instance also directly provides a Streamable HTTP MCP service at /mcp, and the claude.ai connector logs in via OAuth.
- Automation steps: each target can be marked as executed by a person or by automation, and it records which automation completed it (e.g., "n8n did this step for us"); the owner is always a person. On a target, you can check "want this step automated" and attach a reason; the request is sent to the AI agent manager (a separate flag in user management). The AI agent registry maintains an automation catalog: name, webhook address, signing key, enabled/disabled; select by name on the target, and team members cannot see the address and key. Each agent can carry a list of email addresses allowed to start it; an empty list means anyone who can edit the map can start it. Automation starts when an attachment is uploaded, when all subtargets are completed and it is this target's turn, or when someone manually switches the target to "in progress"; while running, it will not start again until it reports back or expires. The outbound request is a POST to the agent address with X-Signature (HMAC-SHA256); the agent downloads files using a run token; the report is POSTed to callback_url, authenticated by the run token, without login.
Usagemethod
- Only Docker is needed. After installation, it runs at http://SERVER-IP:8090 , colleagues on the LAN can open it in a browser. The first registered user automatically becomes the administrator; others can register themselves, or be invited by the administrator from Administration (a temporary password is generated to hand to them).
- AI features are optional and enabled via the environment variables above; when not configured, the server sends requests nowhere, loads no third-party CDNs, and fonts are also served by its own instance, with no telemetry, analytics, or license checks.
Use cases
- Individuals or teams who want to visualize goals, projects, and processes on their own server, and connect tasks with time tracking, people sharing, and automation.
- Those who want AI assistants to participate in creating and maintaining maps via MCP while keeping data off the public internet; suited to organizations concerned with data sovereignty and unwilling to use third-party hosting services.
Limitations
- Currently in public beta; v1.0 will be released after the beta settles down; the self-hosted side focuses testing on installation, reverse proxy, own SMTP, and upgrades.
- Under a fair-code license, open in spirit similar to open source, but you may not resell it as a hosting service.
- API keys act with the owner's permissions: they can see and edit what the owner themselves can see in the app (including shared and team maps); they cannot read account roles, an administrator's key also cannot see others' private maps, and others' public maps are also unreachable (404); management, AI settings, and users are never reachable; the API cannot delete an entire map, nor can it delete map vertices. Limits: 120 reads + 30 writes per key per minute, at most 200 nodes per call, at most 20 keys per account. add_nodes reruns the layout of the entire map. MCP tool output is in English, and server error messages are in the account language.
- Attachments are limited to 200 files per project, and an optional space cap can be set for the entire instance (KB_FILES_MB, MB, 0=disable uploads, blank=unlimited); the previous FLOWMAP_MAP_FILES_MB was a per-project quota defaulting to 200 MB and still applies to those who set it; if it was not set, there is now no space limit.
- Browsers only allow microphone use under HTTPS (or localhost), and the reverse proxy must allow request bodies of about 5 MB; the voice note recording itself is not stored.
- The specific details and usage steps for some features (such as Google login, attachments, SMTP, HTTPS, updates, appearance themes, notifications, time zones and recurring templates, data backup, teams, registration and registration keys) are not yet provided。