Plankwork
AI

The AI is yours. Plankwork is where it works.

Plankwork includes no model and resells none. It gives your AI two doors. The integrated Board Chat runs on a model you choose: on your own server with open source software, or through an inference provider. OpenRouter.ai, for example, offers the models behind Claude, ChatGPT, DeepSeek and others. This door handles most everyday actions directly in the application, and it is the easiest way. MCP connects the assistant or coding agent you already use: Claude, Claude Code, OpenCode, Pi, DeepSeek Harness and others. It gives them Plankwork's well-defined tools, to combine for your own use cases. Nothing else in Plankwork depends on either.

Openness and ownership

Your model, your assistant, your choice.

Plankwork adds no AI charge and no usage meter. What you pay for AI stays between you and the company you chose. Each name below links to its project or service.

Which setup fits you

Keep it on your own hardware

Run an open model on your own server. llama.cpp, its derivatives such as Ollama or LM Studio, and vLLM are supported out of the box. Board Chat and the suggestions then use your server, and their requests go to no AI company. The server needs an HTTPS address that Plankwork can reach. Protect it with a key.

Start with no server

Use an inference provider such as OpenRouter.ai. One key reaches hundreds of models, among them the ones behind Claude, ChatGPT and DeepSeek. You pay OpenRouter for what you use. Pick a model that supports tool calling. A cheap one is enough for most chores. What the model reads goes to OpenRouter and the company running the model.

Use a provider you already pay

Board Chat needs an API that takes OpenAI-compatible requests, with tool calling. An Owner enters the address, the model name and the key. The Claude API has its own setting, and runs every AI feature except Board Chat. Your contract and your bill stay with that provider.

Mix two models

An Owner can add a faster model for light work, such as suggestions and tidying text. It has its own address and key. So a small model on llama.cpp can do the light work, and Claude through OpenRouter can run Board Chat.

Connect your assistant or agent through MCP

Claude connects on the web and on the desktop, on a plan that allows custom connectors. Claude Code and the open source OpenCode and Pi are coding agents for the terminal, with the same address and sign-in. The open source DeepSeek Harness connects through an MCP plugin that supports OAuth. A developer reads and updates tasks from where they code. OpenCode can run on your local model or through OpenRouter. Any tool that supports remote MCP with OAuth can connect.

Use no AI at all

Board Chat and the suggestions stay off until an Owner turns AI on. An Owner can also turn AI clients off. With both closed, the boards, plans and reports work just as before.

Door one · Board Chat
You, in Plankwork You ask in the chat panel beside the board.
Plankwork Reads the board with your permissions, asks the model, and puts any changes on a card for you to apply.
Yours Your model At an address an Owner sets: your own llama.cpp server, or an inference provider such as OpenRouter.ai.
Door two · MCP
You, in your assistant You ask in the AI assistant your company already uses, such as Claude.
Yours Your assistant Connected to Plankwork with your own sign-in, on your own plan with its maker.
Plankwork Answers through 31 tools, and checks each request against your permissions.

The same assistant reaches Jira, GitLab and your other systems through its own connectors. Plankwork does not need to.

Where each part sits. The model and the assistant are yours. Plankwork holds the projects and checks every request.

Through MCP, Plankwork receives only what your assistant puts in each request, never the conversation itself.

Door one · Board Chat

A model of your own for the everyday chores.

Board Chat is the chat panel beside the board, the plan, the risks and the reports. The model behind it is not part of Plankwork. It takes API access, not a chat plan: your own llama.cpp server, or Claude through OpenRouter.ai. An API key is billed apart from a Claude or ChatGPT plan. Plankwork sends the model the request, the conversation so far, and what it reads from the boards the person can open.

Most of what a project manager asks is routine. A small model can do it, because Plankwork gives it ready-made tools: create a task, edit it, move it. A large change takes no longer to ask for than a small one.

It never changes anything by itself. Each request comes back as a card, with one line per change. Nothing happens until someone selects Apply. A line that cannot be undone says so first, and one Undo takes back the rest. By default it changes only the board you are looking at.

Board Chat beside the Acme board. Told that the customer accepted the delivery, it proposes seven changes on a card, each setting a Test & release task to done, with Apply 7 changes and Dismiss.
This is Board Chat beside the board. Told that Acme accepted the delivery, it proposes seven changes on a card.

What people hand to it

  • "Push the venue task three days, and everything waiting on it"
  • "Move everything in Phase 2 four weeks out"
  • "Give all of Anna's tasks to Ben"
  • "Make the status report repeat every Monday"
  • "Delegate this to Michael, back by Friday: I need the vendor numbers"
  • "Copy the Onboarding thread from Acme into this board"
  • "What have I delegated, and what's late?"
  • "Accept the suggested quadrants in Marketing"

Where else your model helps

Quadrant suggestions

Suggests whether a task with no quadrant yet is urgent and important. The suggestion and its reason show as a badge on the task.

Tidying text

Tidies a task's title, description or resolution when you ask. If you edit the text in the meantime, your edit wins. The change can be undone.

Report summaries

Writes an executive summary for a progress report. You can edit it before you export. A scheduled report email sends it as written.

Risk drafts

Turns text you paste, such as meeting notes, into a draft risk. You set the likelihood and the impact.

Plan proposals

Proposes the dependencies between tasks and a size for each. You keep only the rows you want.

Importing a file

Proposes which column of a CSV file is the title, the owner or the date. You review a preview before anything is imported.

It also proposes follow-up tasks and mitigation titles. It summarises risks and the portfolio when asked, and suggests which task a note belongs to. Role fit, a weekly comparison of each person's finished work with their role, is off by default.

Door two · MCP

The assistant you already use, at full scale. Always your decision.

MCP is the open standard AI assistants use to work with other software, and Plankwork has an MCP connector built in. A person adds one address to their assistant, such as Claude or OpenCode, signs in to Plankwork once and approves the connection. From then on the assistant reads their boards, answers questions about them and makes changes, as that person and within that person's permissions.

It works through 31 tools: 20 that only read and 11 that make changes. Between them they cover tasks, threads and dates, delegation, risks, goals, notes, files, time, and Resources and Finance: much the same ground as Board Chat, under the same permission checks.

Going this far is always a person's own decision. Nobody connects an assistant on someone else's behalf. There is no Plankwork card on this door: a change runs when the assistant calls the tool, so the confirmation is your assistant's own approval prompt, and a copy previews first by default. The connection can be revoked in Settings at any time, which cuts the assistant off on its next request, and changing your password disconnects every assistant at once.

An Owner can also turn AI clients off for the whole organisation. Every connected assistant is then refused at its next request, and nobody can connect a new one. The connections are kept, so they work again when the Owner turns it back on.

A chat with an AI assistant connected to Plankwork. Asked who the project manager is in Acme Mobile, it names Victor Hale on the two contracts that list one, says which contracts and projects have none, and adds that the Customer portal v2 contract forecasts a margin of −46.6 %.
This is Claude, the assistant the company already uses, connected through MCP, asked who manages Acme Mobile. It names Victor Hale from the contracts in Plankwork, and adds, unasked, that the portal contract is forecast at a negative margin.
The same chat, asked how loaded the project manager is next quarter. The answer is 32 of 40 hours in every week of Q1 2027, with a table of hours per project, and two warnings: a proposal not yet signed, and time on the portal running above plan.
This is the same conversation, asked how loaded the project manager is next quarter. It shows 32 of 40 hours a week from Resources, project by project, and warns that a proposal not yet signed and the portal's overrun could both eat into the hours left.

Where that conversation went

The two questions above had a reason: a new project for Globex needs someone to run its first phase. The same conversation goes on to put Victor on the project and give it a plan to start from.

The chat goes on. The assistant says it will book Victor once Victor has access; told that has been done, it books 4 hours a week on the Globex project, adds Victor to the project team, and gives the load as 36 of 40 hours.
This is the same conversation, with Victor to cover only the first phase of the Globex project. An assistant cannot give anyone access, so it waits until a person has added Victor, then books 4 hours a week and gives the new load: 36 of 40.
The chat goes on. Asked to copy the Customer data platform board, the assistant previews 2 groups, 5 threads and 19 tasks, copies them when told to go ahead, then lists the status, assignees and dates that came across and suggests three fixes.
This is the next request: copy another project's board as a start. The assistant previews the copy and runs it once told to go ahead, then says what came across with it, the old progress, people and dates, and proposes how to clear them.
The Globex board after the copy: Victor's initiation task above the copied Delivery and Governance groups, whose cards still carry the old project's owners, dates and progress.
This is the Globex board right after the copy, below the task Victor already had. The old project's owners, dates and progress are still on it, as the assistant said.

What it did, and what it left to people

  • A person gave Victor access to the project. An assistant cannot, whoever asks.
  • The copy was previewed before it ran, and one undo takes back the copy or the plan changes. The booking cannot be undone, and the assistant said so.
  • The warnings came unasked: a contract forecast at a loss, a plan that does not match its contract, a booking that stops too soon. What to do about them stayed with the person asking.
The chat goes on. Given a start date of 1 December, the assistant moves the plan to run from 1 December 2026 to 31 August 2027, resets the 19 copied tasks, gives Victor 7 project manager tasks, and lists three things to look at: weekends, the contract's milestones and Victor's booking.
This is the last step: a new start date. The assistant moves the whole plan, resets every copied task and gives the project manager's tasks to Victor. One undo takes it all back, and it lists three things still to look at.

A second example: OpenCode

The conversation above, in Claude, is one example of how software that supports MCP can use Plankwork's tools. This is a second example, in OpenCode: an open source coding agent for the terminal, here on an open model running on a local llama.cpp server. It connects through the same address and sign-in, and it works on the same projects.

This example only reads, but write operations are equally well supported, so the security of MCP, in addition to Plankwork's permissions, rests largely on how the software you connect is configured.

"mcp": {
  "servers": {
    "plankwork": {
      "type": "remote",
      "url": "https://app.plankwork.com/mcp"
    }
  }
},
"permissions": [
  { "action": "plankwork_*", "resource": "*", "effect": "ask" },
  { "action": "plankwork_get_*", "resource": "*", "effect": "allow" },
  { "action": "plankwork_list_*", "resource": "*", "effect": "allow" },
  { "action": "plankwork_search_*", "resource": "*", "effect": "allow" },
  { "action": "plankwork_count_*", "resource": "*", "effect": "allow" },
  { "action": "plankwork_get_upload_link", "resource": "*", "effect": "ask" }
]

This is the Plankwork part of the OpenCode configuration used here, version 2.2.5. The last matching rule wins: every Plankwork tool asks first, the read tools run freely, and the upload link asks again, because it hands out a link for uploading files. A tool added later asks too, unless its name starts with one of those read prefixes. The file holds no password or token.

Two things undo this. Running OpenCode with --auto approves these changes without asking. And a rule has to write the tool's name with an underscore, as here: with a dot, as a session displays it, the rule does nothing.

A terminal running OpenCode, in a session titled Victor Hale task list. It lists the tasks on three projects: a table of six open tasks on Acme – Customer Portal v2 with status, dates and blockers, then eight done; one task on Acme – Store Kiosk Pilot; nine to do on Globex – Network Analytics Rollout, under Initiation, Delivery milestones and Governance. A short summary names the overdue task. The lines below show an open model on llama.cpp and a time of 2 minutes 20 seconds.
This is OpenCode, asked for Victor Hale's task list. It shows the tasks on three projects, with their status, dates and what blocks them, marks the one that is overdue, and ends with what is most pressing. The seven Globex tasks under Delivery milestones and Governance are the ones the conversation above gave Victor. The lines under the answer name the model and show that the answer took 2 minutes 20 seconds.

Plankwork as your assistant's inbox

One way of working that runs today. The instructions and the outcome both live on the project, and the assistant does the work in between.

Write it down

Put the instructions on a Plankwork task, as you would for a colleague, and tag the task: say, "assistant".

Hand it over

Tell your assistant, such as Claude Code or OpenCode: "Do the tasks tagged assistant on the Acme board." It reads the board, finds the tagged tasks and reads the instructions on each.

It works where the work is

Through its own Jira and GitLab connectors, it does what each task asks: opens the ticket, answers the issue, reviews the merge request.

It records the outcome

It links each task to the ticket or merge request it worked on, and marks the task done. The project keeps the record, and the next person finds it there.

Plankwork asks assistants to keep comments for people's own words, so its own account of the work comes back to you in the conversation. In every system it touches, the assistant works with your permissions, and each change it makes in Plankwork is marked as made by an assistant.

Responsible by construction

Rules that hold, whichever AI you use.

Plankwork checks these itself, on every request. They do not rely on a model behaving well, so they hold for any model and any assistant, from your own llama.cpp server to Claude.

Nothing changes from a chat alone

Board Chat puts every change on a card. If the board has changed so that a line no longer fits, nothing is applied. At either door, if one change in a request is invalid, nothing is applied.

No more than the person

Every read and every change passes the same checks as the person's own clicks: their boards, their permission profile, and Owner-only stays Owner-only. A board they cannot open does not exist for the AI.

The Owner decides

Only an Owner sets the model, its address and its key, or opens and closes a door. Other members see the AI settings and cannot change them.

Access and customers are off limits

Giving anyone access to a board or a project is refused, even when an Owner asks. Client accounts are refused at both doors, so no AI acts in a customer's name.

Every change is signed

Activity marks each change an AI makes with its door, and with the model when it is known. That is your organisation's own model, or the one an assistant such as OpenCode reports, labelled as reported.

Suggestions, not decisions

A quadrant suggestion never sets the quadrant. A risk draft with a score is thrown away. A plan proposal never sees or carries a date. Summaries are written from figures Plankwork computes first, and when nothing moved, no model is asked.

What the AI can and cannot do →Connecting an assistant through MCP →

Start with the chores. Go further when you decide.