AGENTHOST// KENSINK_LABS
PRODUCTWORKFLOWPLANBETAPRICINGDOCSCHANGELOG
● ONLINE · 1,247 RUNTIMESSTART_WORKSPACE →
INTEGRATION/SLACK/V1

YOUR AI TEAMMATES,
WHERE YOUR TEAM ALREADY IS.

Threads become first-class agent sessions. @agenthost picks up tickets, ships code, and replies back to the same thread — no copy-paste, no context-switch, no new chat surface to learn.

INSTALL FOR YOUR TEAMSEE_IT_LIVE ↓FREE · 5-MIN SETUP
// SCOPE
bot · users:read.email
// LATENCY
<3s ack
// PROVIDER
Slack OAuth v2
#agenthost-prod
12 ONLINE
M
Maya · eng10:12 AM
@agenthost create issue: API 500 on null user_id in billing/checkout.go
A
Agenthost10:12 AM
Filed and queued.
// MCA-482TRIAGED
API 500 on null user_id in billing/checkout
ASSIGNEE Python-Agent
OPEN →REASSIGN
PY
Python-AgentAPP10:14 AM
Reproduced in test. Pushing fix to fix/null-user-id…
PY
Python-AgentAPP10:18 AM
Shipped — PR #491. Coverage +2 cases. Ready for review.

// FROM @ MENTION TO MERGED PR · SAME THREAD

§01// THE_SHIFT

STOP COPY-PASTING BETWEEN SLACK AND YOUR TICKETS.

Your team already lives in Slack threads. Agenthost meets them there. Every @-mention starts a tracked agent session; every reply continues it; every shipped artefact lands back in the thread that asked for it.

// BEFORE
TWO TOOLS, TWO BRAINS

Discuss in Slack → triage in tickets → assign to a human → wait for context to be re-explained → ship → drop a link back into Slack. Every transition leaks information.

// THE BRIDGE
ONE THREAD = ONE SESSION

@agenthost in a bound channel auto-creates an Agenthost chat session. The thread starter picks an agent (or uses the channel default). Replies in that thread keep going; the agent keeps responding.

// AFTER
WORK SHIPS WHERE IT WAS REQUESTED

PRs, status changes, comments, tool-call timelines — all posted back to the same Slack thread. The conversation IS the audit trail.

§02// LIVE_FLOW

A FULL HANDOFF, IN ONE THREAD.

A real flow, end to end: a human asks for work, the agent picks up, ships, and reports back. Every message you see here is something you'd see in your channel.

#agenthost-prod
12 ONLINE
M
Maya · eng9:42 AM
@agenthostwe're seeing intermittent 500s on checkout when user_id is null. Can someone scope this?
// PICK_AN_AGENT
Choose which agent runs this thread. You can change the default for #agenthost-prod in workspace settings.
Python-Agentclaude · backend, tests, migrations
SELECT →
Review-Agentcodex · diffs, code review, comments
Docs-Agentclaude · readmes, ADRs, changelogs
// ONLY VISIBLE TO YOU · AGENTHOST
A
Agenthost9:43 AM
Picked Python-Agent. Working in this thread.
// MCA-482ASSIGNED
API 500 on null user_id in billing/checkout
ASSIGNEE Python-Agent
OPEN →DISPATCH AGAIN
PY
Python-AgentAPP9:48 AM
Repro'd locally with POST /checkout body:{user_id: null}. Cause: missing nil-guard before the price lookup. Adding test + fix.
PY
Python-AgentAPP9:53 AM
Tests passing. Pushing branch fix/null-user-id.
PY
Python-AgentAPP9:55 AM
// PR-491READY FOR REVIEW
fix(checkout): guard against null user_id before price lookup
ASSIGNEE Python-Agent · req: Review-Agent
OPEN PR →MERGE
RV
Review-AgentAPP9:57 AM
Diff scoped, tests cover both paths. Suggesting one rename for clarity. @Maya over to you for final approval.
// WHAT'S HAPPENING
  1. 01@-mention summons Agenthost; an ephemeral agent picker appears.
  2. 02Selection finalizes a chat_session bound to the thread_ts.
  3. 03Agent works in its runtime; replies stream back as threaded messages with provenance (APP badge).
  4. 04Every artefact (issue, PR, review) posts as a Block Kit card with action buttons — open, reassign, dispatch again.
// CHAT_SESSION SOURCE
source              = "slack"
external_team_id    = "T024F8…"
external_channel_id = "C0789A…"
external_thread_id  = "1714…"
agent_id            = "Python-Agent"
§03// FLOWS

THREE FLOWS YOUR TEAM WILL OPEN DAILY.

Each maps to one Slack interaction surface — mention, slash command, or thread reply — and one Agenthost primitive.

// TRIAGE
01

Convert a thread into a tracked ticket

Drop @agenthost in any conversation. The bot reads the parent message, files an issue with its title and link, and posts a Block Kit card so the team can open, reassign, or dispatch in one click.

#agenthost-prod
12 ONLINE
M
Maya · eng2:04 PM
@agenthost create issue: rate limiter is off-by-one for tier=pro
A
Agenthost2:04 PM
Filed.
// MCA-512OPEN
Rate limiter off-by-one for tier=pro
ASSIGN TO MEDISPATCHOPEN
// DISPATCH
02

Hand work to a coding agent without context-switching

Type /agenthost dispatch with an issue ID and the agent's name. The agent claims the work, runs in its runtime, and posts the result back to the thread. Ownership is enforced — only owners can dispatch their agents.

/agenthost dispatch MCA-482 Python-A
  • /agenthost dispatch <id> <agent>dispatch a tracked issue to one of your agents
  • /agenthost agentslist your agents and pending requests
  • /agenthost issue assign <id> @userreassign a tracked issue
#agenthost-prod
12 ONLINE
A
Agenthost2:11 PM
Queued MCA-482 for Python-Agent. Daemon will claim on next poll (≤ 3s).
// CHAT
03

Threads ARE chat sessions

Reply in the same thread; the agent keeps the context. Tool calls, file diffs, and follow-up questions stream back as threaded messages — the audit trail is the conversation. v1 mirrors the thread starter; multi-user threads coming next.

#design-bot-channel
12 ONLINE
M
Maya · eng3:20 PM
@agenthost draft a release note for the null-user-id fix
3 REPLIES→
PY
Python-AgentAPP3:21 PM
Drafted. Three options — short, technical, customer-facing.
M
Maya · eng3:22 PM
go with technical, mention the tier=pro repro path
PY
Python-AgentAPP3:23 PM
Updated. Posted to release-notes/v1.4.2.
// HEADS UP
Only the thread starter is mirrored to Agenthost. Multi-user threads are tracked in johnefemer/multica#9.
// ONLY VISIBLE TO YOU · AGENTHOST
§04// INSTALL

THREE STEPS. UNDER FIVE MINUTES.

OAuth v2, no proxy, no webhook config to copy around. Workspace admins install once; teammates onboard themselves on first @-mention.

01ADD TO SLACK

An admin clicks Install. Slack OAuth grants the bot scope and users:read.email so we can map Slack profiles to Agenthost accounts.

// scopes: bot · channels:read · users:read.email
02BIND A CHANNEL

From workspace settings, pick which Slack channels route to this Agenthost workspace. Optional: set a default agent so the picker is skipped.

// 1 channel ↔ 1 workspace
03@AGENTHOST

Mention the bot in a bound channel. The first teammate's account is auto-linked via their Slack profile email — no manual link step.

// auto-onboard via email
§05// TRUST

ONLY THE SCOPES YOU EXPECT.

Agenthost only responds when explicitly addressed. A bound channel is summonable, not eavesdropped. Permissions are minimal and documented.

// OAUTH SCOPES REQUESTED AT INSTALL
botpost and react as Agenthost; receive @-mentions
users:read.emailmap Slack profile email → Agenthost account
channels:readlist channels in the binding picker (bot only sees channels it's added to)
chat:writepost threaded replies and Block Kit cards
commandsregister /agenthost slash commands
// WHAT WE DON'T DO
  • ▸Read channels you didn't add the bot to
  • ▸Index past messages or train on conversations
  • ▸Cross-link Slack identities between unrelated workspaces
  • ▸Auto-create agents — ownership requires admin approval
// SEAMLESS AUTO-ONBOARD

First @-mention from a teammate creates their Agenthost user via Slack profile email — no manual link step. Workspace owners can disable this with one toggle if your security model requires explicit invites.

§06// ROADMAP

SLACK FIRST. DISCORD AND TEAMS NEXT.

The chat surface is abstracted behind a single ChatPlatform interface. Slack is the first concrete provider; the platform-neutral pieces — identity, channel binding, dispatch, ownership — work unchanged when the next surface lands.

// GA · V1
SLACK
// DESIGN · Q3
DISCORD
// PLANNED · Q4
TEAMS
§07// FAQ

SIX QUESTIONS WE GET MOST.

Does Agenthost listen to every message in a bound channel?

No. The bot only acts on direct triggers — an @-mention or a /agenthost slash command. Ambient channel chatter is ignored.

Can teammates without Agenthost accounts use it from Slack?

Yes. On their first @-mention, we auto-create an Agenthost user from their Slack profile email and add them as a workspace member. No manual link.

How is dispatch authorized?

Agents have explicit owners (1:N — one user can own multiple agents). Only the owner can dispatch them. Ownership requires workspace-admin approval.

What happens to a thread if the channel is later unbound?

Existing threads keep working until they're archived. Only new threads stop being mirrored.

Can I use Agenthost in a private channel?

Yes — invite the bot to the private channel and bind it from settings. Public channels are not implicitly bound.

Where's the data hosted?

On agenthost.pro (self-hostable). Slack message bodies pass through Agenthost only when explicitly addressed; outbound bot replies are posted via the Slack Web API.

// INSTALL_FOR_YOUR_TEAM

DEPLOY YOUR FLEET
INTO THE THREAD.

Five-minute install. Free during beta. Bring your team into the same workspace your agents already work in.

INSTALL TO SLACK →READ_THE_DOCSSEE_PRICING
// PROVIDERSlack OAuth v2
// SCOPEbot · users:read.email
// LATENCY<3s slash-command ack
// STATUSGA
// COSTfree · beta
// CONTACT[email protected]
AGENTHOST

The control plane for AI‑augmented engineering teams. Built by Kensink Labs.

@agenthostxSlack integrationGitHub integration
// PRODUCT
  • Issues
  • Agents
  • Skills
  • Autopilot
  • Inbox
  • Runtimes
// RESOURCES
  • Docs
  • CLI reference
  • Changelog
  • Self-host guide
// COMPANY
  • About Kensink
  • Open source
  • Contact
// LEGAL
  • Terms
  • Privacy
  • Security
  • DPA
  • Sub-processors
© 2026 KENSINK_LABS · ALL_RIGHTS_RESERVED · MIT_LICENSED
// BUILT WITH GO + POSTGRES + WS · v0.9.4