Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.wednesdayai.dev/llms.txt

Use this file to discover all available pages before exploring further.

Developer overview

WednesdayAI is built to be extended. The core is intentionally lean; new capabilities belong in plugins, hooks, and channel adapters rather than in core. This section covers how to build extensions for WednesdayAI.

Architecture

Core gateway (src/)
├── Plugin SDK (src/plugin-sdk/)  ← stable API surface
├── Hooks (src/hooks/)            ← event-driven automation
└── Extensions (extensions/)     ← channel plugins, tool plugins
Key principle: everything that can be a plugin, should be. Hooks and plugins interact with the gateway through a stable SDK contract; they do not import from core internals.

Extension types

Plugins

Add new tools, providers, or capabilities. Published as npm packages under @wednesdayai/*.

Hooks

React to gateway events: session start/reset, commands, lifecycle. Small TypeScript handlers.

Channel adapters

Connect a new messaging platform as a first-class channel.

Plugin SDK

The stable API surface for plugins. Types, interfaces, and contracts.

Tech stack

LayerTechnology
LanguageTypeScript 5.9, strict ESM
RuntimeNode.js 22+
Package managerpnpm 10.23
Buildtsdown + post-build tsx scripts
TestsVitest v4 + V8 coverage
LinterOxlint v1.50
Full tech stack: CLAUDE.md §2.

Plugin scopes

WednesdayAI uses two npm scopes:
  • @wednesdayai/* — new extensions built for this fork. Use this for anything new.
  • @openclaw/* — inherited extensions from the fork base. Publish only if the package already exists under this scope on npm.

Getting started

1

Clone the repo

git clone https://github.com/ExpansionX/WednesdayAI-core.git
cd WednesdayAI-core
pnpm install
pnpm build
2

Run the tests

pnpm test:fast    # unit tests (fast)
pnpm test         # full suite
3

Read the plugin guide

Start with Your first plugin for a worked example, or Hooks for simpler event-driven automation.

Design principles

  1. Lean core — if a capability can live in a plugin, it should. Don’t add to core.
  2. Stable contracts — plugins import from openclaw/plugin-sdk, never from core internals.
  3. No workspace:* in dependenciesnpm install --omit=dev in plugin dirs must work.
  4. Naming — user-facing text uses WednesdayAI; code, config keys, and imports use openclaw.
  5. No any in SDK exports — the plugin SDK surface must be fully typed.

Contributing

See Contributing for the full workflow, PR checklist, and maintainer guidelines.