Hi, I'm Pantalk
I put the coding agent you already run into the chat apps your team already uses - and I don't weld the two together, so you can change either one later.
Let me tell you why I was built. Agentic harnesses are getting better every month. Claude Code, Codex, Copilot, Gemini CLI, Goose, OpenCode, Aider - they reason, plan, search, code, and make decisions. But when it comes to actually talking to people? They hit a wall.
Plenty of people have noticed. A Claude tag will put Claude in Slack. Block's Buzz will put Block's agents in Block's workspace. Both are good. Both also make the decision for you: one harness, welded to one platform. If you change harnesses - and you will - you start over.
And the platform side is no easier. Slack has one API. Discord has another. Mattermost, Telegram, WhatsApp, IRC, XMPP/Jabber, Twitch, Nostr, Matrix, Twilio, Zulip, iMessage - each one speaks a different language with different auth flows, different event models, and different threading semantics. An agent that wants to monitor a Slack channel, reply in an XMPP room, and post to a Nostr group has to juggle three SDKs, three connection lifecycles, and three completely different data shapes.
That's where I come in. I sit in the middle and I refuse to pair anything. Harnesses attach to me on one side through drivers. Platforms attach on the other through connectors. I keep the connections alive, normalize the events, and store the history - and neither side ever learns anything about the other.
“Any agent, any chat.”
Your harness doesn't need to know it's talking to Slack or Discord. Slack doesn't need to know it's talking to Claude Code. Both just talk to me, and I handle the rest. Simple CLI commands, Unix socket protocol, JSON in and out. The way tools should work.
How I think about things
Nothing gets welded together
A harness is a driver line. A platform is a type line. Neither is allowed to know about the other, so replacing one never costs you the other. That is not a feature I added later - it's the shape of the whole thing.
Connections are my job, not yours
I keep persistent sessions to every chat platform so your harness never has to worry about reconnecting, refreshing tokens, or handling websocket drops. That complexity lives inside me.
If it can't be piped, it's broken
Every action I expose is a CLI command that outputs clean, parseable data. Your harness can call me as a tool, pipe my output through jq, or chain me into any shell workflow. I'm designed to be composed.
Memory shouldn't be optional
I persist every message and event to a local SQLite database, with sessions isolated per bot, channel, and thread. Your harness can read history, poll for notifications, and pick up exactly where it left off - even after a restart on either side.
Real-time when you need it
Sometimes polling isn't enough. I offer real-time event streaming so your harness can react instantly to mentions, DMs, and messages as they arrive across any platform.
What I'm made of
I'm written in Go - fast, statically typed, and easy to deploy as a single binary. No runtimes, no containers required (though you can use them if you want).
Language
Go
Protocol
Unix socket + JSON
Storage
SQLite
License
Open source
My architecture is simple on purpose. One daemon process (pantalkd) manages all the connections. CLI clients talk to it over a Unix socket. Everything is local, fast, and private.
Who I'm for
I was built for agentic harnesses and the people who run them. If you want your harness to:
- Open PRs and fix failing tests in the thread that asked for it
- Triage incidents in-channel, or over SMS to a phone with no app on it
- Serve your whole team from one Claude or Codex seat, not one each
- Be reachable by people who will never install anything
- Survive you replacing it with a better harness six months from now
…then I'm your infrastructure. You focus on the reasoning. I'll handle the talking.
If you'd rather see it than read about it, my siblings built Pantalk Ghost - an always-on agent computer in the same broad category as OpenClaw and Hermes, but with one important difference: Ghost does not invent another agent runtime. It supplies the persistent Linux workspace, desktop, credentials, and chat reach, while Codex, Claude Code, Goose, or another harness remains the agent. The current image includes Codex, Claude Code, and Kimi Code, plus one-command deployments that connect the same environment to a real Mattermost or IRC server.