Skip to content

iotexproject/binoSwarm

ย 
ย 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Bino Swarm ๐Ÿ

The autonomous agent framework that doesn't mess around. Build once, deploy everywhere.

Powered by Quicksilver โ€” our open-source framework that bridges Large Language Models (LLMs) with Decentralized Physical Infrastructure Networks (DePINs) to create advanced AI agents.

Originally forked from ElizaOS โ€” credits to the pioneering work that laid the foundation.

See it in action: @Bino_AI โ€ข @Caila_AI

๐Ÿ“‹ Table of Contents

โœจ What You Get

  • ๐Ÿ› ๏ธ Multi-platform domination: Discord, Twitter, Telegram โ€” your agents go where the action is
  • ๐Ÿง  Model buffet: Grok, OpenAI, Anthropic, Gemini โ€” pick your poison, we'll make it work
  • ๐Ÿ“š Document devouring: Feed it anything. PDFs, docs, websites โ€” it reads faster than you and remembers everything
  • ๐Ÿ’พ Privacy-first memory: Smart retention that remembers what matters, forgets what doesn't. Auto-deletes old data and wipes everything on user request
  • ๐Ÿ”ง Infinitely hackable: Built to be broken apart and rebuilt. Create custom actions, clients, whatever your heart desires
  • ๐Ÿ“ฆ MCP ready: Connect your own servers because vendor lock-in is for the weak

๐ŸŽฏ What You'll Build

  • ๐Ÿค– Chatbots with brains โ€” no more "I don't understand" responses
  • ๐Ÿ•ต๏ธ Digital workforce โ€” agents that actually get stuff done while you sleep
  • ๐Ÿ“ˆ Business automation โ€” because manual processes are so 2020
  • ๐Ÿ›ก๏ธ Brand guardians โ€” agents that know your brand inside-out, hunt down scammers, and turn FUDders into believers
  • ๐ŸŽฎ NPCs that aren't braindead โ€” give your game characters actual personality
  • ๐Ÿง  Trading bots โ€” automate your way to financial freedom (not financial advice, just good code)

๐Ÿš€ 3-Minute Setup (No, Really)

What You Need

Windows folks: You know the drill. WSL 2 or bust.

The Steps (Don't Skip Any)

  1. Give your agent a personality: Copy characters/trump.character.json to characters/my-character.json and make it interesting. Boring agents are useless agents.

  2. Handle your secrets: Copy .env.example to .env and fill in your API keys.

    cp .env.example .env

    Pro tip: Skip the .env if you're feeling brave โ€” pass secrets through character JSON instead.

  3. Grab the Docker blueprint: Copy docker-compose.yaml to your project root.

  4. Point it in the right direction: Edit docker-compose.yaml to use your character:

    services:
        bino:
            image: ghcr.io/iotexproject/bino:latest # Latest and greatest
            command:
                ["pnpm", "start", "--character=characters/my-character.json"]
    # ... rest of your config ...
  5. Fire it up:

    docker compose up

    Watch your digital offspring come to life. If it breaks, that's what logs are for.

๐Ÿ› ๏ธ For the Brave: Build From Source

Want to get your hands dirty? Add your own features? Break things properly? Skip the Docker and build it yourself.

Clone and Conquer

git clone https://github.com/iotexproject/binoSwarm.git binoSwarm
cd binoSwarm

Set Up Your Playground

  1. Handle secrets: Same as above โ€” copy .env.example to .env and fill it out.

  2. Create your character: Copy and customize a character file just like the Docker setup.

  3. Build the beast:

    pnpm i --no-frozen-lockfile && pnpm build
  4. Let it rip:

    pnpm start --character=characters/binotest.json

Now you're running raw code. Break it, fix it, make it better. Pull requests welcome.

๐Ÿ“š Feed Your Agent Knowledge

Your agent is only as smart as what you teach it. Time to make it an expert.

The Knowledge Vault

Drop your knowledge files into characters/knowledge/. Markdown files work great.

Link External Knowledge

Got a knowledge base in another GitHub repo? Don't copy-paste like a peasant โ€” link it:

# Clone your knowledge repo outside the project
git clone https://github.com/your-org/your-docs.git
cd binoSwarm

# Create a symbolic link
ln -s ../your-docs characters/knowledge/your-docs

Tell Your Agent What to Read

Update your character.json to point to the knowledge files:

"knowledge": [
    {
        "path": "iotex2-docs/README.md",
        "shared": false
    },
    {
        "path": "iotex2-docs/depin-infra-modules-dim/ioconnect-hardware-sdk/README.md",
        "shared": false
    }
]

Now your agent knows everything you know. Scary? Maybe. Useful? Absolutely.

๐ŸŽญ Character Data Sources

Your agent's personality comes from multiple sources, merged in a specific order. Here's how it works:

The Loading Hierarchy

When you start an agent, character data is loaded and merged in this order:

  1. Default Character (packages/core/src/defaultCharacter.ts)

    • Used when no character JSON path is provided
    • Provides a baseline "Eliza" character with default traits
    • Includes system prompt, bio, lore, message examples, and style
  2. Character JSON File (characters/*.json)

    • Loaded when you specify --character=characters/my-character.json
    • Defines core character properties: name, model provider, plugins, clients
    • Can include initial traits, but these get enriched by subsequent sources
  3. Filesystem Traits (characters/agentsTraits/<characterName>/)

    • Primary source for character traits (bio, lore, knowledge, templates, etc.)
    • Loaded from a directory matching the character's name field
    • Structure mirrors GitHub repo format (see below)
    • If found, traits are merged with the character JSON
  4. Database Traits (PostgreSQL fallback)

    • Fallback when filesystem traits directory doesn't exist
    • Maintains backwards compatibility with existing deployments
    • Traits stored in characters table with is_published = true

How It Works (HIW)

The merge process follows this flow:

Start Agent
    โ†“
Load Character JSON (or use default)
    โ†“
Check: Does `characters/agentsTraits/<characterName>/` exist?
    โ”œโ”€ YES โ†’ Load traits from filesystem โ†’ Merge โ†’ Done
    โ””โ”€ NO โ†’ Check database for traits โ†’ Merge โ†’ Done

Important: Filesystem traits take precedence over database traits. If both exist, filesystem wins.

GitHub Repo Integration

The filesystem traits directory structure matches a GitHub repository format. Here's how to set it up:

Repository Structure

Your character traits repo should follow this structure:

your-character-repo/
โ”œโ”€โ”€ bio.json                 # Array of biography strings
โ”œโ”€โ”€ lore.json                # Array of lore strings
โ”œโ”€โ”€ knowledge.json           # Array of knowledge paths (strings or objects)
โ”œโ”€โ”€ messageExamples.json     # Nested array of message examples
โ”œโ”€โ”€ postExamples.json        # Array of post example strings
โ”œโ”€โ”€ topics.json              # Array of topic strings
โ”œโ”€โ”€ adjective.json            # Array of adjective strings
โ”œโ”€โ”€ style.json               # Style object with all/chat/post arrays
โ”œโ”€โ”€ templates.json           # Template names mapped to file paths
โ”œโ”€โ”€ xTargetUsers.txt         # One username per line
โ”œโ”€โ”€ xKnowledgeUsers.txt      # One username per line
โ””โ”€โ”€ prompts/
    โ”œโ”€โ”€ system.md            # System prompt (becomes system_prompt)
    โ”œโ”€โ”€ goals.md             # Template (becomes templates.goalsTemplate)
    โ””โ”€โ”€ *.md                 # Other templates

Setting Up the Symlink

  1. Clone your character traits repo:

    git clone https://github.com/your-org/your-character-repo.git
  2. Create a symlink in the project:

    cd binoSwarm
    ln -s ../your-character-repo characters/agentsTraits/your-character-name

    The directory name must match the name field in your character JSON.

Template Files

The templates.json file maps template names to file paths:

{
    "goalsTemplate": "./prompts/goals.md",
    "twitterQSPrompt": "./prompts/twitterQS.md",
    "memeSystemPrompt": "./prompts/memeSystem.md"
}

The loader reads these files and stores their content in character.templates.

Knowledge Files

knowledge.json can contain either:

  • Simple strings: ["path/to/file.md"]
  • Objects with paths: [{"path": "path/to/file.md", "shared": false}]

Both formats are supported and converted to string arrays during loading.

About

Conversational AI Agent with personality

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Languages

  • TypeScript 97.3%
  • PLpgSQL 1.8%
  • Other 0.9%