b3-fun/b3os
b3-fun/b3osB3OS 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