Files
Abiba (pi) 66c6d4966e fix: correct Abiba platform label (pi not openclaw), add plugin skeletons, shared config, fix health port
- Replace all 'openclaw' references with 'pi' (pi coding harness)
- Fix Git remote URL in CONTEXT.md
- Harmonize health port to 9200 across all docs
- Add config.yaml.example with full schema
- Add pi-zulip-extension skeleton (TypeScript, pi Extension API)
- Add hermes-zulip-plugin skeleton (Python, BasePlatformAdapter)
- Add agent-zero-plugin skeleton (Python, A0 plugin API)
- Update ADR-007 with pi extension docs reference
- Document private topic ACL v1 limitation in CONTEXT.md
2026-06-19 23:55:19 +00:00

3.4 KiB

Zulip Platform Plugins — Domain Vocabulary

This document captures the shared language and architectural invariants for the multi-platform Zulip agent communication system.

Domain Terms

Term Definition
Agent An AI agent operating on a platform (Hermes/Agent Zero/pi) that can receive and respond to Zulip messages
Adapter / Plugin A platform-native component that bridges Zulip events to the agent framework
@mention A Zulip mention (@**Tanko Bot**) that triggers the named agent to respond
@all-bots A dedicated Zulip bot user that, when @mentioned, triggers ALL agents across all platforms
Topic A Zulip conversation thread within a stream
Private topic An agent-named topic (e.g., tanko-private) where only the bot and its owner participate
Owner The human user associated with an agent bot, stored in per-agent config

Naming Conventions

  • Agent Zulip bot display names: lowercase, dash-separated, -bot suffix — e.g., tanko-bot, mumuni-bot
  • Agent Zulip bot emails: @chat.sysloggh.net — e.g., tanko-bot@chat.sysloggh.net
  • Private topics: {name}-private — e.g., tanko-private
  • Owner privacy: agent should never expose owner name to other agents or users

Agent Registry

Agent Platform Zulip Bot CT Private Topic
tanko Hermes (Python) tanko-bot amdpve CT 112 tanko-private
mumuni Hermes (Python) mumuni-bot minipve CT 114 mumuni-private
koonimo Hermes (Python) koonimo-bot amdpve CT 113 koonimo-private
koby Hermes (Python) koby-bot amdpve CT 111 koby-private
kagentz Agent Zero kagentz-bot amdpve CT 105 kagentz-private
abiba pi (TypeScript) abiba-bot amdpve CT 100 abiba-private

@all-bots Resolution

@all-bots refers to all 6 agents across all frameworks (Hermes, Agent Zero, pi). When @all-bots is mentioned in any topic:

  1. Each per-agent bot receives the event (since they all share narrow: stream agent-hub)
  2. Each bot checks: "Is All Bots in mentioned_users?"
  3. If yes, bot forwards the message to its agent
  4. @all-bots is a dedicated Zulip bot user with display name All Bots and email all-bots@chat.sysloggh.net

Response Rules

  • Own topic: Agent always responds (to its private topic)
  • Collaboration topic (any topic that isn't a private topic): Agent responds only when @mentioned
  • @all-bots: All agents respond
  • Private topics: Only the agent owner + bot are participants; bot enforces this via config owner_email matching

Private Topic ACL (v1 — documented limitation)

In v1, private topic access is enforced by matching sender_email == config.owner_email on each message. This is not cryptographically authenticated — Zulip does not enforce sender identity. A user who knows the owner email can impersonate them. This is an acceptable limitation for v1 internal use. v2 should use Zulip invite-only stream permissions or shared-secret challenge-response.

Monorepo Structure

All 3 platform plugins live in a single Gitea repository at git@git.sysloggh.net:SyslogSolution/zulip-platform-plugins.git

Guardian Directives

  • All destructive actions require user confirmation before execution
  • Plugin updates are version-controlled through Gitea
  • Config files are per-agent and pushed alongside code