π οΈ A collection of tools for Beige agents.
Beige is an open-source AI agent framework with a gateway/sandbox architecture. This toolkit provides gateway-side tools that give agents access to external services β GitHub, Slack, Confluence, Chrome, macOS Calendar, conversation history, and other agents.
All tools run on the gateway (host machine), not inside agent sandboxes. Each tool supports fine-grained access control via config-level allow/deny lists so you can scope exactly what each agent is permitted to do.
| Tool | Description | Requires |
|---|---|---|
| github | Interact with GitHub via the gh CLI β repos, issues, PRs, releases, workflow runs, and more. Repository deletion is permanently blocked. Raw API access is off by default. |
gh installed and authenticated |
| slack | Interact with Slack workspaces β list conversations, read message history, send messages, add reactions. Access controlled via command-level allow/deny lists. | slackcli installed and authenticated |
| confluence | Read and write Atlassian Confluence β pages, spaces, search, attachments, comments, content properties, and exports. Supports both command-level and space-level access control. | confluence-cli installed and authenticated |
| chrome | Control a Chrome browser β navigation, screenshots, DOM inspection, JS evaluation, network monitoring, performance analysis. Each agent gets its own persistent browser profile. | Google Chrome installed |
| apple-calendar | Read events from macOS Calendar β supports iCloud, Google, Exchange, and subscribed calendars. List calendars, view events by date/range, and search by title, notes, or location. Read-only. | macOS, Xcode Command Line Tools |
| sessions | Browse and search conversation history. Agents can only access their own sessions β listing, full message retrieval, and pattern-based search. | β |
| spawn | Spawn other Beige agents (or sub-agents of yourself) with multi-turn conversations. Depth-limited and opt-in β no targets allowed until explicitly configured. | β |
From npm (recommended for stable releases):
beige tools install npm:@matthias-hausberger/beige-toolkit
# Specific version
beige tools install npm:@matthias-hausberger/beige-toolkit@0.1.0From GitHub (latest from main branch):
beige tools install github:matthias-hausberger/beige-toolkitCherry-pick specific tools from the repository via GitHub:
beige tools install github:matthias-hausberger/beige-toolkit/tools/github
beige tools install github:matthias-hausberger/beige-toolkit/tools/chrome
beige tools install github:matthias-hausberger/beige-toolkit/tools/slackbeige tools install ./path/to/beige-toolkitAfter installing, add tools to your agents in config.json5:
{
agents: {
assistant: {
model: { provider: "anthropic", model: "claude-sonnet-4-6" },
tools: ["github", "chrome", "slack", "sessions"],
},
},
}Installed tools are auto-discovered β no need to specify path or target. Add a tools.<name> entry only for custom config:
{
tools: {
github: {
config: { allowedCommands: ["repo", "issue", "pr"] },
},
slack: {
config: { denyCommands: ["messages send", "messages draft"] },
},
chrome: {
config: { headless: true, idleTimeoutMinutes: 15 },
},
},
}Every tool supports fine-grained permission scoping via config:
tools: {
github: {
config: { allowedCommands: ["issue", "pr"] },
},
slack: {
config: { denyCommands: ["messages send", "messages draft"] },
},
},Use per-agent toolConfigs to deep-merge overrides with the base tool config:
tools: {
chrome: {
config: { headless: true, timeout: 60 },
},
},
agents: {
qa: {
tools: ["chrome"],
toolConfigs: {
chrome: { headless: false, timeout: 120 },
},
},
assistant: {
tools: ["chrome"],
// uses base config as-is
},
},See each tool's README for the full list of config options.
beige tools list # List all installed tools
beige tools update # Update all tools
beige tools update github # Update a specific tool
beige tools remove github # Remove a toolEach tool has two documentation files:
| File | Audience | Purpose |
|---|---|---|
README.md |
Users / developers | Overview, prerequisites, configuration reference |
SKILL.md |
AI agents | Usage examples, calling conventions, workflows |
- Node.js β₯ 22
- pnpm
git clone https://github.com/matthias-hausberger/beige-toolkit
cd beige-toolkit
pnpm installdevDependencies references the published @matthias-hausberger/beige npm package so the project builds on any machine without extra setup. When you also have the beige repository checked out as a sibling directory (../beige), pnpm's overrides block in package.json automatically redirects the dependency to that local copy, letting you test against unreleased changes.
parent/
beige/ β local beige repo (optional)
beige-toolkit/ β this repo
# With sibling beige repo β uses local beige automatically via pnpm overrides
cd beige-toolkit
pnpm install
# Without sibling beige repo β installs the published npm version, no extra steps needed
cd beige-toolkit
pnpm installIf you are on a machine that does not have a sibling beige directory, remove or comment out the pnpm.overrides entry in package.json before running pnpm install, or pnpm will error because the file:../beige path does not exist:
// package.json β comment out when ../beige is not present
"pnpm": {
"overrides": {
// "@matthias-hausberger/beige": "file:../beige"
}
}To start the gateway and install the toolkit for local development:
# Start the beige gateway
cd ../beige
pnpm run beige gateway start
# Install the local toolkit
cd ../beige-toolkit
bash scripts/dev-install.shBeige symlinks the local directory, so edits to tools/ take effect on the next gateway restart.
pnpm test # Run all tests
pnpm test:watch # Watch mode
pnpm typecheck # Type-check
pnpm smoke # Full smoke sequence- Create
tools/<name>/withtool.json,package.json,index.ts,README.md,SKILL.md - Write tests in
tools/<name>/__tests__/ - If the tool has npm dependencies, add them to
tools/<name>/package.jsonunderdependencies
Each tool has its own package.json so it can be installed individually via GitHub. For tools with no runtime dependencies, the package.json just needs name and type:
{
"name": "@beige/tool-my-tool",
"private": true,
"type": "module"
}npm publish --access publicThe files field in the root package.json controls what goes into the npm tarball. Only tool source files are included β tests, scripts, and dev config are excluded.
beige-toolkit/
βββ package.json # npm package config
βββ tsconfig.json
βββ vitest.config.ts
βββ tools/
β βββ github/
β β βββ tool.json # Tool manifest (name, description, target)
β β βββ package.json # Tool's own dependencies (if any)
β β βββ index.ts # Handler (runs on the gateway host)
β β βββ README.md # User/developer documentation
β β βββ SKILL.md # Agent usage guide
β β βββ __tests__/
β βββ chrome/
β β βββ tool.json
β β βββ package.json
β β βββ index.ts
β β βββ mcp-client.ts # Additional module
β β βββ process-manager.ts
β β βββ README.md
β β βββ SKILL.md
β β βββ skills/ # Detailed agent guides
β β βββ __tests__/
β βββ slack/
β βββ confluence/
β βββ apple-calendar/
β βββ sessions/
β βββ spawn/
βββ test-utils/
βββ tests/ # Repo-level smoke tests
βββ scripts/
βββ dev-install.sh
βββ smoke.sh
MIT