Skip to main content

AgentOS Extensions

Official extension registry for the AgentOS ecosystem.

CI Status License: MIT API Docs npm: registry npm: catalog

Published Extensions

All extensions are published to npm under the @framers scope.

Registry Packages

PackageDescriptionnpm
@framers/agentos-extensions-registryCurated registry bundle — single import with createCuratedManifest()
@framers/agentos-extensionsStatic catalog (registry.json) of all extensions

Extensions

PackageDescriptionnpm
@framers/agentos-ext-web-searchMulti-provider web search & fact-checking
@framers/agentos-ext-web-browserBrowser automation & content extraction
@framers/agentos-ext-news-searchNews article search via NewsAPI
@framers/agentos-ext-giphyGIF & sticker search via Giphy API
@framers/agentos-ext-image-searchStock photo search (Pexels, Unsplash, Pixabay)
@framers/agentos-ext-voice-synthesisText-to-speech via ElevenLabs
@framers/agentos-ext-cli-executorShell command execution & file management
@framers/agentos-ext-authJWT authentication & subscription management
@framers/agentos-ext-telegramTelegram Bot API integration
@framers/agentos-ext-telegram-botTelegram bot communications handler
@framers/agentos-ext-anchor-providersSolana on-chain provenance anchoring
@framers/agentos-ext-tip-ingestionTip content processing pipeline

Channel Adapters

PackageDescriptionnpm
@framers/agentos-ext-channel-telegramTelegram messaging channel (grammY)
@framers/agentos-ext-channel-whatsappWhatsApp messaging channel (Baileys)
@framers/agentos-ext-channel-discordDiscord messaging channel (discord.js)
@framers/agentos-ext-channel-slackSlack messaging channel (Bolt)
@framers/agentos-ext-channel-webchatBuilt-in WebChat channel (Socket.IO)

Repository Structure

agentos-extensions/
├── .changeset/ # Changesets for versioning & publishing
├── .github/workflows/ # CI, release, TypeDoc pages
├── logos/ # Branding assets
├── templates/ # Starter templates for new extensions
│ ├── basic-tool/ # Single tool template
│ ├── multi-tool/ # Multiple tools template
│ ├── guardrail/ # Safety/compliance template
│ └── workflow/ # Multi-step process template
├── registry/
│ ├── curated/ # Official & verified extensions
│ │ ├── auth/ # Authentication & subscriptions
│ │ ├── communications/# Messaging (Telegram bot)
│ │ ├── integrations/ # External services (Telegram API)
│ │ ├── provenance/ # On-chain anchoring & tip ingestion
│ │ ├── research/ # Web search & browser automation
│ │ ├── channels/ # Messaging channels (Telegram, WhatsApp, Discord, Slack, WebChat)
│ │ └── system/ # CLI executor
│ └── community/ # Community-contributed extensions
├── scripts/ # Registry build & scaffolding tools
├── registry.json # Auto-generated extension manifest
├── pnpm-workspace.yaml # Workspace packages for publishing
└── typedoc.json # API docs config

Quick Start

Load all extensions at once via the curated registry:

npm install @framers/agentos-extensions-registry
import { AgentOS } from '@framers/agentos';
import { createCuratedManifest } from '@framers/agentos-extensions-registry';

const manifest = await createCuratedManifest({
tools: 'all',
channels: 'none',
secrets: {
'serper.apiKey': process.env.SERPER_API_KEY!,
'giphy.apiKey': process.env.GIPHY_API_KEY!,
},
});

const agentos = new AgentOS();
await agentos.initialize({ extensionManifest: manifest });

Only extensions whose npm packages are installed will load — missing packages are skipped silently.

Install individual extensions

npm install @framers/agentos-ext-web-search
import { AgentOS } from '@framers/agentos';
import webSearch from '@framers/agentos-ext-web-search';

const agentos = new AgentOS();
await agentos.initialize({
extensionManifest: {
packs: [{
factory: () => webSearch({ /* config */ })
}]
}
});

Registry options

createCuratedManifest() accepts:

OptionTypeDefaultDescription
toolsstring[] | 'all' | 'none''all'Which tool extensions to enable. Pass an array of names (e.g. ['web-search', 'giphy']) to selectively load.
channelsChannelPlatform[] | 'all' | 'none''all'Which messaging channels to enable.
secretsRecord<string, string>{}API keys and tokens. Falls back to environment variables.
loggerRegistryLoggerconsoleCustom logger (info, warn, error, debug methods).
basePrioritynumber0Base priority for all extensions.
overridesRecord<string, ExtensionOverrideConfig>Per-extension overrides for enabled, priority, and options.

Secret keys

Secret IDEnvironment VariableExtension
serper.apiKeySERPER_API_KEYweb-search
serpapi.apiKeySERPAPI_API_KEYweb-search
brave.apiKeyBRAVE_API_KEYweb-search
giphy.apiKeyGIPHY_API_KEYgiphy
elevenlabs.apiKeyELEVENLABS_API_KEYvoice-synthesis
pexels.apiKeyPEXELS_API_KEYimage-search
unsplash.apiKeyUNSPLASH_ACCESS_KEYimage-search
pixabay.apiKeyPIXABAY_API_KEYimage-search
newsapi.apiKeyNEWSAPI_API_KEYnews-search
telegram.botTokenTELEGRAM_BOT_TOKENchannel-telegram
discord.botTokenDISCORD_BOT_TOKENchannel-discord
slack.botTokenSLACK_BOT_TOKENchannel-slack
slack.appTokenSLACK_APP_TOKENchannel-slack

Selective loading examples

// Only web search and giphy, no channels
const manifest = await createCuratedManifest({
tools: ['web-search', 'giphy'],
channels: 'none',
});

// Only Telegram and Discord channels, all tools
const manifest = await createCuratedManifest({
channels: ['telegram', 'discord'],
tools: 'all',
secrets: {
'telegram.botToken': process.env.TELEGRAM_BOT_TOKEN!,
'discord.botToken': process.env.DISCORD_BOT_TOKEN!,
},
});

// Override specific extension options
const manifest = await createCuratedManifest({
tools: 'all',
channels: 'none',
overrides: {
'web-search': { priority: 10 },
'cli-executor': { enabled: false },
},
});

Create a new extension

# Use the scaffolding script
pnpm run create-extension

# Or copy a template
cp -r templates/basic-tool registry/curated/category/my-extension
cd registry/curated/category/my-extension
pnpm install
pnpm run dev

Releasing & Publishing

This repo uses Changesets for multi-package versioning and npm publishing. See RELEASING.md for the full workflow.

TL;DR

# 1. Make your changes to one or more extensions

# 2. Add a changeset describing what changed
pnpm changeset

# 3. Commit and push to master
git add . && git commit -m "feat: my changes" && git push

# 4. The GitHub Action opens a "Version Packages" PR
# → Merge it to publish updated packages to npm

Each extension is versioned and published independently. A change to web-search does not bump telegram.

Naming Convention

TypePatternExample
Extension@framers/agentos-ext-{name}@framers/agentos-ext-web-search
Template@framers/agentos-template-{type}@framers/agentos-template-basic-tool

CI/CD

All extensions get free CI/CD via GitHub Actions:

  • CI (ci.yml): Lint, test, typecheck on every PR
  • Release (release.yml): Changesets auto-version PRs + npm publish on merge
  • TypeDoc (pages-typedoc.yml): API docs deployed to framersai.github.io/agentos-extensions
  • Extension validation (extension-validation.yml): Manifest & structure checks
  • Dependabot: Automated dependency updates with auto-merge for patches

Quality Standards

All Extensions

  • TypeScript with strict mode
  • 80% test coverage

  • MIT license
  • No hardcoded secrets

Additional for Curated

  • Professional code review
  • Performance benchmarks
  • Integration tests
  • Migration guides

Documentation

Contributing

See CONTRIBUTING.md for detailed guidelines.

License

All extensions in this repository are MIT licensed.