🧪 killBottleneck is in public beta — cloud and self-host.🧪 killBottleneck is in beta.Beta on GitHub →
Skip to content

What killBottleneck is

killBottleneck is a goal map tool with an optional AI advisor, run entirely on your own server. You draw what you want to achieve as a tree, hang tasks off it, and the app keeps telling you the one thing that matters on any given morning: what is blocking someone else, what is overdue, and what is due today.

The name is the point. A plan usually does not fail because nobody knows the goal — it fails because one step nobody is looking at holds up five others. The map makes that step visible.

The model in four words

Everything in the app hangs off four concepts. They are worth reading once, because the rest of the documentation and the whole API use exactly these words.

ConceptWhat it is
ProjectOne map. Its root node is the apex — the thing the whole map is for.
Goal (node)A step in the map. Has a status, optionally a deadline, a responsible person, a colour, and children.
TaskA concrete piece of work. A task always belongs to a project; it may also be attached to a specific goal.
Idea stashA quick capture for things you do not want to structure yet. An idea may carry a deadline and can be converted into a task later.

Two consequences of that model are easy to miss:

  • A task cannot exist without a project. The server rejects a task without one. If you just want to jot something down, it belongs in the idea stash, not in tasks.
  • A plan is not a deadline. A goal can be planned without committing to a date; deadlines are set where they actually mean something.

Who does a step: a person or an automation

Every goal records who performs it — a person, or an automation. That is what makes the map more than a drawing: a goal marked as automated can be wired to a webhook and actually run, report back, and move itself to done. Goals can also be marked "I would like this automated" so that whoever builds the automations has a queue to work from.

My day

The home page and the Tasks page both show My day: a live, clickable breakdown of your work into blocking others → overdue → today → within a week, computed from your data rather than stored anywhere. It exports as a portrait PNG for your phone — either full, or anonymous with names redacted, if you want to post it somewhere.

What works without AI

All of it. AI is off by default and the app is fully usable that way: the map editor, statuses and notes, comments on goals, sharing maps read-only or read/write, public maps, export to image and PDF, tasks and My day, the idea stash, time tracking with a client registry, and notifications.

With AI switched on you additionally get: drafting a map from a single sentence, expanding a branch, chatting about a map, an AI project summary, task suggestions from a goal, a map from text or voice, and one line of daily encouragement in My day. See Configuration.

Your data stays put

With KB_AI_PROVIDER=none (the default) nothing ever leaves your server. With any other provider, map data is sent to the endpoint you configured — which may well be an Ollama instance on the same machine.

One instance, one team

An instance is a single team with three roles: Administrator (users, roles, organization name and logo), Manager (invites members, sees and manages all tasks) and Member (their own tasks and maps shared with them).

Next

fair-code — self-hosting and internal use are free, reselling as a hosted service is not.