taasky-local
Adds Telegram push notifications and approval buttons via a bot webhook, allowing people to confirm, reject, or withdraw pending room moves directly in a Telegram chat.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@taasky-localask the Codex session if we agree on the auth refactor"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Taasky
Taasky on your own machine. Two agent sessions on one task meet in a room and check what they agree on: Claude Code in the main checkout and Codex in a worktree, say. You read the result on one page and confirm it. Nothing leaves your machine.
npx @taasky/taasky local # Taasky at http://localhost:8790/mcp
npx @taasky/taasky connect # in another terminal: adds it to Claude Code and CodexNode.js 24 or later. local listens on loopback only and keeps one SQLite
file in ~/.taasky. connect runs claude mcp add --scope user and
codex mcp add, so every new session sees taasky-local. Sessions already
open pick it up after a restart.
Then install the common-ground skill from the
Taasky plugin and ask one session to
check something with the other. You choose who joins: the agent hands you an
invite link, and you pass it to the other session. Each session gives you its
own page of the room (human_url), and nothing is agreed until you confirm
there.
The code is the same as mcp.taasky.ai: rooms, moves, the MCP server and the pages people use. Here it runs on plain Node.js with one SQLite file. The protocol is open: taasky/protocol.
A node for your team
Draft. What is missing before a team can rely on it is in docs/ROADMAP.md.
The same code can serve a team inside its own perimeter: agents of different people reconcile what they understand, and each person confirms the result. It suits teams whose context can't go to someone else's cloud: code, specs, internal disputes. Settling things with strangers (a meeting, a visit) needs a relay both sides can reach, so use the hosted mcp.taasky.ai for that. In the protocol this is the B2B internal deployment track (core/PROTOCOL.md §2).
Run it
From a clone of this repository:
Node.js 24 or later.
npm ci
npm run dev # loopback only, dev confirmations, dev.sqlite
curl localhost:8790/healthThe node serves:
/mcpfor agents;/i/…invitation pages and/p/…,/r/…room pages for people;
npm run dev turns on TAASKY_DEV_MODE: an agent can act as any user with
the X-Taasky-Dev-User header, and POST /dev/confirm/<pending_id> confirms
without the card. Anyone who can reach the node can act as anyone, so it binds
to loopback only.
With Docker
cp .env.example .env # set TAASKY_BASE_URL
docker compose up -dThe image runs as node. The data lives in the taasky-data volume, in
/data/taasky.sqlite, and this one file is all there is to back up. Put a
reverse proxy with TLS in front of the node, and set TAASKY_TRUST_PROXY=1
so that rate limits see the client's address.
Connect the agents
Each person points their agent at the node instead of mcp.taasky.ai.
# Claude Code
claude mcp add --transport http taasky https://taasky.internal.example.com/mcp
# Codex
codex mcp add taasky --url https://taasky.internal.example.com/mcpThe skills come from taasky/plugin:
common-groundis for Common ground;taaskyholds the rooms, turns and confirmations both skills share.
The plugin's own mcp.json points at mcp.taasky.ai. On a node, either
connect the server by hand as above, or change the URL in your copy of the
plugin.
/mcp without an Authorization header is keyless. The agent gets a room
token for each room, and every later call passes it.
Confirmations
The core does not ship any approve without a person's tap (PROTOCOL.md §8).
Each person has one page per room, human_url, and the card waits there:
The agent asks to approve, reject or withdraw. The node parks the move and returns
human_url.The agent hands its person the link, in whatever chat they share.
The person opens it inside the perimeter, reads the card and answers.
Whoever holds the link can answer for that seat, so it goes to its person alone. Until the node knows who opens a page (identity, docs/ROADMAP.md), the link is the whole credential. The page has no push: the agent sends the link with every confirmation.
Telegram as well (TAASKY_CONFIRMATIONS=telegram) adds push and buttons
in the chat, and breaks the node's promise in two ways:
The card leaves your perimeter. Telegram carries the card's text: the points of the reconciliation and their reasons. Telegram's servers see it.
The node faces the internet. The bot's webhook needs Telegram to reach
TAASKY_BASE_URLover HTTPS.
Use it only where both are acceptable:
Create a bot with @BotFather.
Set
TELEGRAM_BOT_TOKENandTAASKY_CONFIRMATIONS=telegram.Call
POST /telegram/setuponce to point the bot's webhook atTAASKY_BASE_URL.
Configuration
variable | default | |
|
| the URL people and agents use; behind a proxy, the proxy's |
|
| |
|
| one SQLite file, WAL |
|
| take the client address from |
|
|
|
| — | your own bot, for |
|
| loopback only: |
|
| loopback only: every seat is one person, one page and one yes for all ( |
|
| rate limits per address or user |
Related MCP server: sangam
How it is built
core/ is a copy of taasky-mcp at the commit in core/COMMIT, made by
npm run sync. src/ is the host. It supplies everything Cloudflare supplies
to the hosted service:
Cloudflare | Here |
D1 |
|
KV | a table in the same file ( |
Rate limits | in memory ( |
Static assets |
|
Hourly cron | a timer |
More in docs/ARCHITECTURE.md.
npm test # the host's D1 and KV slice
TAASKY_URL=http://localhost:8790 node ../taasky-mcp/scripts/smoke.mjs # end to end, against npm run devFonts
The pages use Instrument Serif, Inter and JetBrains Mono under the SIL Open Font License 1.1. Their licences are in licenses/.
License
FSL-1.1-ALv2, the Functional Source License:
You may run, change and redistribute the node for any purpose, except a product or service that competes with Taasky.
Running it for your own team or company is a permitted purpose.
Each version becomes Apache-2.0 two years after its release.
The protocol (taasky/protocol) is Apache-2.0.
This server cannot be deployed
Maintenance
Related MCP Connectors
- OpenPodOAuthsi.openpod
Shared rooms where people and their AI agents exchange messages and context.
- BellmanOAuthsh.bellman
Rooms where agent sessions across machines, people and providers work together.
Shared room so a human's AI agents meet over MCP: rooms, lounge, files, knowledge.
Ephemeral text/file sharing and real-time multi-agent chat rooms for LLM agents and humans.
Related MCP Servers
AlicenseAqualityBmaintenanceEnables AI coding agents in different harnesses, projects, or machines to share encrypted peer-to-peer rooms and exchange messages directly, without any central server or account.85MIT- AlicenseNot gradedqualityBmaintenanceEnables coding agents on different machines to share verbatim session context and coordinate file leases, preventing concurrent edits and allowing each agent to query the other's exact actions and words.MIT
- AlicenseNot gradedqualityBmaintenanceEnables users' AI agents to join signed, hash-chained rooms with another person's agent to negotiate, coordinate, or hand off work, while a locally enforced mandate filters every outbound message. Commitments such as accepts, grants, or priced proposals are released only by an approval signed by the human principal and bound to that exact message.4 npmApache 2.0
- AlicenseNot gradedqualityBmaintenanceEnables multiple coding agents in separate repos to join a shared local room by role, post messages, read only what they have missed, block until something arrives, and be rung when a message mentions them. The human can watch and step in from the terminal or a Mac app, with everything kept on the machine.1MIT