
Product
Introducing Repository Access Permissions and Custom Roles
Socket now supports Custom Roles and Repository Access Permissions so organizations can control who can access specific repositories and actions.
@pasky/muaddib
Advanced tools
Muaddib is an AI agent that's been built from the ground up not as a private single-user assistant (such as OpenClaw), but as a resilient entity operating in an inherently untrusted public environment (public IRC / Discord / Slack servers).
What does it take to talk to many strangers?
Of course, this means a tradeoff. Muaddib is not designed to sift through your email and manage your personal calendar!
It is tailored for public and team environments, where it's useful to have an AI agent as a "virtual teammate" - both as an AI colleague in chat for public many-to-many collaboration, and allowing personal or per-channel contexts.
Muaddib maintains a refreshing, very un-assistanty tone of voice that optimizes for short, curt responses (sometimes sarcastic, always informative) with great information density. And you may quickly find that Muaddib (in this case equipped with Opus 4.5) can do things that official Claude app does much worse (let alone other apps like ChatGPT or Gemini!).
(By the way, the token usage has been optimized since!)
Of course, as with any AI agent, the real magic is in chatting back and forth. (Multiple conversations with several people involved can go on simultaneously on a channel and Muaddib will keep track!)
(➜ Generated image, in case you are curious)
(Note that this particular task is on the edge of raw Opus 4.5 capability and all other harnesses and apps I tried failed it completely.)
Discord is of course supported:

So is Slack - including threads:

Muaddib has been battle-tested since July 2025 in a (slightly) hostile IRC environment, lurking at a variety of libera.chat channels. However, bugs are possible (no warranty etc.) and LLM usage carries some inherent risks (e.g. a code execution sandbox with your API keys preloaded plus an access to the internet can be fooled by a highly crafted malicious website that the agent visits to upload these API keys somewhere).
All muaddib data lives in $MUADDIB_HOME (defaults to ~/.muaddib/):
~/.muaddib/
├── config.json # Configuration (no secrets)
├── auth.json # API keys and secrets
├── arcs/ # Per-arc data (one subdir per channel/DM)
│ └── <arc>/
│ ├── chat_history/ # JSONL chat logs (one file per day)
│ ├── chronicle/ # Markdown chronicle entries
│ ├── workspace/ # Gondolin VM persistent workspace (mounted at /workspace)
│ └── checkpoint.qcow2 # Gondolin VM disk checkpoint
├── artifacts/ # Published artifacts
└── logs/ # Per-message log files
Copy config.json.example to ~/.muaddib/config.json and configure:
$MUADDIB_HOME)Copy auth.json.example to ~/.muaddib/auth.json and set your API keys:
anthropic, openai, openrouter, deepseek, etc.)jina, brave)discord, slack-app, slack-{workspaceId})Tip: Set MUADDIB_HOME=. to use the current directory (useful for development).
Migrating from older versions: If you previously had API keys in config.json, run npx tsx scripts/migrate-auth.ts to extract them into auth.json, then manually remove the secret fields from config.json.
First, Muaddib runs agent code in isolated QEMU micro-VMs (Gondolin) - to set it up:
sudo apt install qemu-system qemu-utils lz4
./scripts/build-gondolin-image.sh
Then, combine one or more of the following:
~/.muaddib/auth.json as the discord key.npm cinpm run buildnpm run start~/.muaddib/config.json and tokens in ~/.muaddib/auth.json.npm cinpm run buildnpm run startRecommended for an IRC bot: See Docker instructions for running a Muaddib service + irssi in tandem in a Docker compose setup.
Manual for IRC ("bring your own irssi"):
irssi-varlink is loaded in your irssi, and your varlink path is set up properly in ~/.muaddib/config.json IRC section.npm cinpm run buildnpm run startmynick: message - Automatic modemynick: !h - Show help and info about other modes!balance / !setkey - Manage per-user spending and custom openrouter keys!approve / !deny - Approve/deny a blocked untrusted network requestMuaddib is built on the pi-coding-agent SDK (@mariozechner/pi-agent-core and @mariozechner/pi-ai) for its agent runtime, but defines its own complete tool set (code execution, web search, artifacts, etc.).
# Install dependencies
npm ci
# Typecheck + tests
npm run typecheck
npm test
# Build
npm run build
You can test command parsing and response flow from the command line:
npm run cli:message -- --message "!h"
npm run cli:message -- --message "tell me a joke"
npm run cli:message -- --message "!d tell me a joke"
npm run cli:message -- --message "!a summarize https://python.org"
# Or with explicit config:
# npm run cli:message -- --message "!a summarize https://python.org" --config /path/to/config.json
This simulates full room command handling without running the full chat service.
FAQs
Secure, multi-user AI assistant for IRC, Discord, and Slack
We found that @pasky/muaddib demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Product
Socket now supports Custom Roles and Repository Access Permissions so organizations can control who can access specific repositories and actions.

Product
Socket MCP now lets AI assistants review org alerts, investigate threats using the Socket threat feed, and inspect package files in addition to dependency scoring.

Product
Socket Firewall blocks malicious VS Code and Open VSX extensions before install, protecting developers from compromised editor marketplaces.