Back to feed

b3-fun/b3os

b3-fun/b3os
226
+68/day
5
TypeScript

B3OS is your automation platform for cross-chain workflows. Build automated strategies, schedule transactions, and execute complex on-chain operations.

From the README

Open-Source Actions for B3OS

Build and contribute automation actions for the B3OS workflow platform.

b3os.org · Contributing Guide · Quickstart

Powered by

What is B3OS?

B3OS is a workflow automation platform for blockchain operations. Users build automated workflows triggered by blockchain events, schedules, webhooks, or manual execution — composed from modular actions.

Actions are the building blocks. Each action is a self-contained TypeScript class that performs a specific operation: fetching token prices, sending messages, executing on-chain transactions, querying APIs, and more.

This repository is the open-source home for community-contributed actions. You can build actions that integrate with any API, blockchain, or service — and make them available to every B3OS user.

Repository Structure

b3os/
├── packages/
│   ├── mcp/                      # MCP server (@b3dotfun/b3os-mcp)
│   └── sdk/                      # Action SDK (@b3os/sdk)
│       ├── src/                  # Base classes, types, registry
│       └── actions/              # Community-contributed actions
└── docs/                         # Documentation
    └── quickstart.md

Quick Start

1. Clone and install

git clone 
cd b3os
pnpm install

2. Run the tests

pnpm test

3. Create your first action

Every action lives in its own directory under packages/sdk/actions/ and consists of three files:

packages/sdk/actions/my-action/
├── execute.ts        # Action class (extends BaseAction)
├── schema.ts         # Input/output JSON schemas
└── index.ts          # Re-export

Here's the simplest possible action:

// packages/sdk/actions/my-action/execute.ts
import { BaseAction } from "../../src/base-action";
import { ActionCategory } from "../../src/types";
import type { ActionExecutionParams, ActionResult } from "../../src/types";
import { payloadSchema, resultSchema } from "./schema";

export class MyAction extends BaseAction {
  constructor() {
    super("my-action", {
      name: "My Action",
      description: "Does something useful.",
      payloadSchema,
      resultSchema,
      category: ActionCategory.UTILITY,
      author: "your-github-username",
      tags: ["example"],
      createdBy: "your-github-username",
      operationType: "read",
    });
  }

  async execute(params: ActionExecutionParams): Promise {
    const { myInput } = params.inputs as { myInput: string };
    return this.createSuccessResult({ output: myInput.toUpperCase() });
  }
}

See the full quickstart guide for schemas, testing, and more.

Anatomy of an Action

| File | Purpose | | ------------ | ---------------------------------------------------------------------------------------------------- | | execute.ts | Action class extending BaseAction. Contains constructo