SkillAgentSearch skills...

Gladiator

Two zero-human AI companies battle for GitHub stars using Hermes Agent + Paperclip. Nous Research Hackathon 2026.

Install / Use

/learn @runtimenoteslabs/Gladiator
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

GLADIATOR

License: MIT GitHub release Hermes Agent Paperclip

Two zero-human AI companies. Same product. Different strategies. One winner.

Gladiator pits two autonomous AI companies (Blitz, growth-first, vs Craft, quality-first) against each other to maximize GitHub stars on identical starter repos. Powered by Paperclip orchestration and Hermes Agent workers. A live dashboard visualizes the battle in real-time.

Built for the Nous Research Hermes Agent Hackathon (March 2026).

<p align="center"> <a href="https://youtu.be/YqLcMmzl3Yg"> <img src="https://img.youtube.com/vi/YqLcMmzl3Yg/maxresdefault.jpg" alt="Demo Video" width="700"/> </a> <br/> <strong>Watch the full demo</strong> </p> <p align="center"> <img src="assets/glad_1.png" alt="Gladiator landing page" width="700"/> <br/> <img src="assets/glad_2.png" alt="Competitors and stack" width="700"/> </p>

What You'll See

  1. Landing page: explains the product (llm-judge), the rules and the two rival companies
  2. Live dashboard: 9-section narrative: scoreboard, task boards, code comparison, Gantt chart, audit trail, learning evidence, merge controls
  3. Competition: 9 agents complete 10 tasks in ~5-6 minutes, creating skills, growing memory and writing code
  4. Winner announcement: auto-detects completion, declares winner by projected GitHub stars
  5. Merge: companies unite, skills transfer across teams, proving Hermes learning is real

Architecture

<p align="center"> <img src="assets/hermes_system_architecture.svg" alt="System Architecture" width="680"/> </p>

| Component | Tech | Port | |-----------|------|------| | Paperclip | Node.js + PostgreSQL 16 | 3100 | | Hermes Agent | Python CLI + Anthropic API | - | | Dashboard | FastAPI + SSE + vanilla JS | 4000 | | Evidence DB | SQLite (WAL mode) | - | | Watcher | Python daemon | - |


Prerequisites

| Requirement | Version | Notes | |-------------|---------|-------| | Python | 3.11+ | For Hermes Agent + Gladiator dashboard | | Node.js | 20+ | For Paperclip | | pnpm | 9+ | Paperclip uses pnpm workspaces | | PostgreSQL | 16+ | Paperclip's data store | | Anthropic API key | - | Claude Sonnet/Haiku access | | ~$5-6 USD | - | Per 10-minute competition run (9 Sonnet agents) |


Setup Guide

Step 1: Install Hermes Agent

# Official installer
curl -fsSL https://hermes.nousresearch.com/install.sh | bash

# Verify
hermes --version
# Expected: Hermes Agent v0.2.0+

# Configure Anthropic provider
cat > ~/.hermes/.env << 'EOF'
ANTHROPIC_API_KEY=your-key-here
EOF

# Test
hermes chat -q "Say hello in 5 words" -Q --provider anthropic -m claude-haiku-4-5-20251001

Step 2: Install & Configure Paperclip

# Clone Paperclip
cd ~
git clone https://github.com/paperclipai/paperclip.git
cd paperclip

# Install dependencies (includes hermes-paperclip-adapter@0.1.1)
pnpm install

PostgreSQL setup:

# Create database and user
sudo -u postgres psql -c "CREATE USER paperclip WITH PASSWORD 'paperclip';"
sudo -u postgres psql -c "CREATE DATABASE paperclip OWNER paperclip;"

# On WSL2, if PostgreSQL isn't running:
sudo service postgresql start

Apply the Hermes adapter (if not already in your Paperclip version):

The hermes-paperclip-adapter@0.1.1 npm package provides the integration. Paperclip needs three things:

  1. Add "hermes_local" to AGENT_ADAPTER_TYPES in packages/shared/src/constants.ts
  2. Add "hermes-paperclip-adapter": "0.1.1" to server/package.json dependencies
  3. Import and register the adapter in server/src/adapters/registry.ts:
// Add imports
import {
  execute as hermesExecute,
  testEnvironment as hermesTestEnvironment,
  sessionCodec as hermesSessionCodec,
} from "hermes-paperclip-adapter/server";
import {
  agentConfigurationDoc as hermesAgentConfigurationDoc,
  models as hermesModels,
} from "hermes-paperclip-adapter";

// Add adapter definition
const hermesLocalAdapter: ServerAdapterModule = {
  type: "hermes_local",
  execute: hermesExecute,
  testEnvironment: hermesTestEnvironment,
  sessionCodec: hermesSessionCodec,
  models: hermesModels,
  supportsLocalAgentJwt: true,
  agentConfigurationDoc: hermesAgentConfigurationDoc,
};

// Add to adaptersByType map

Then run pnpm install again to fetch the adapter package.

Known adapter patches (may already be fixed in newer versions):

The adapter v0.1.1 had two bugs we patched locally:

  1. Env variable unwrapping: Paperclip wraps env vars as {"type":"plain","value":"..."} objects. The adapter's execute.js needs to unwrap the .value property:

    // In node_modules/hermes-paperclip-adapter/dist/server/execute.js
    // Find the env variable assignment loop and ensure it handles both formats:
    if (typeof v === "string") {
        env[k] = v;
    } else if (v && typeof v === "object" && typeof v.value === "string") {
        env[k] = v.value;
    }
    
  2. Missing Anthropic provider: Add "anthropic" to VALID_PROVIDERS in node_modules/hermes-paperclip-adapter/dist/shared/constants.js:

    export const VALID_PROVIDERS = [
        "auto", "anthropic", "openrouter", "nous", ...
    ];
    

Step 3: Clone Gladiator

cd ~/python_projects  # or wherever you prefer
git clone https://github.com/runtimenoteslabs/gladiator.git
cd gladiator

# Create Python virtual environment
python3 -m venv base-product/.venv
source base-product/.venv/bin/activate
pip install fastapi uvicorn httpx rich sse-starlette

# Configure API key
cp .env.example .env
# Edit .env and add your ANTHROPIC_API_KEY

Step 4: Create Companies & Agents in Paperclip

Start Paperclip first:

cd ~/paperclip
DATABASE_URL="postgres://paperclip:paperclip@localhost:5432/paperclip" pnpm dev &
sleep 10
curl -s http://localhost:3100/api/health  # Should return {"status":"ok"}

Then run the setup script:

cd ~/python_projects/gladiator
./base-product/.venv/bin/python scripts/setup_companies.py

This creates:

  • Blitz Corp: 4 agents (CEO, Engineer, CMO, Content)
  • Craft Labs: 5 agents (CEO, CTO, Engineer 1, Engineer 2, Docs)
  • Isolated ~/.hermes/gladiator/{agent-id}/ homes with SOUL.md personalities
  • gladiator_config.json with all company/agent UUIDs

Step 5: Start the Dashboard

cd ~/python_projects/gladiator
./base-product/.venv/bin/python -m uvicorn dashboard.server:app --host 0.0.0.0 --port 4000

Open http://localhost:4000/landing in your browser.

Step 6: Launch Demo

Click LAUNCH DEMO on the landing page. Everything else is automated:

  • Evidence watcher auto-starts
  • Git repos auto-initialize
  • 9 agents wake up after 5-second delay
  • 10-minute timer begins
  • Winner announced when all tasks complete (or timer expires)
  • Click MERGE after winner to demonstrate cross-company skill transfer

Running the Demo

Quick Start (after initial setup)

# Terminal 1: Paperclip
cd ~/paperclip
DATABASE_URL="postgres://paperclip:paperclip@localhost:5432/paperclip" pnpm dev

# Terminal 2: Dashboard
cd ~/python_projects/gladiator
./base-product/.venv/bin/python -m uvicorn dashboard.server:app --host 0.0.0.0 --port 4000

# Browser: http://localhost:4000/landing → Click LAUNCH DEMO

What Happens During a Run

| Time | What's happening | |------|-------| | 0:00 | Reset wipes all state, restarts watcher, inits fresh git repos | | 0:05 | 9 agents wake up and start working on assigned tasks | | 1:00–5:00 | Tasks complete, skills get written, memory grows, code gets committed | | ~5:30 | All 10 tasks done, winner announced, agents paused automatically | | +1 min | Click MERGE: companies unite, skill transfer task runs |

Each run costs roughly $5-6 on the Anthropic API (9 Sonnet agents doing tool-heavy work). Budget accordingly.

Dashboard Pages

| URL | Description | |-----|-------------| | /landing | Pre-demo landing page with LAUNCH button | | / | Main dashboard (9 sections + merge controls) | | /comparison | Head-to-head company comparison + agent details | | /intel | System checks, strategic insights, heartbeat history |


Project Structure

gladiator/
├── base-product/           # Canonical llm-judge starter code
│   └── src/llm_judge/      # judge.py, cli.py, display.py
├── company_a/              # Blitz
│   ├── agents/             # SOUL.md personalities (source of truth)
│   │   ├── ceo/SOUL.md
│   │   ├── engineer/SOUL.md
│   │   ├── cmo/SOUL.md
│   │   └── content/SOUL.md
│   └── repo/               # Agent-modified llm-judge (gitignored, created at runtime)
├── company_b/              # Craft
│   ├── agents/             # SOUL.md personalities
│   │   ├── ceo/SOUL.md
│   │   ├── cto/SOUL.md
│   │   ├── engineer_1/SOUL.md
│   │   ├── engineer_2/SOUL.md
│   │   └── docs/SOUL.md
│   └── repo/               # Agent-modified llm-judge (gitignored, created at runtime)
├── dashboard/
│   ├── server.py           # FastAPI + SSE backend (1300+ lines)
│   └── static/             # HTML/JS/CSS frontend
├── traces/
│   ├── db.py               # SQLite schema (5 tables)
│   ├── collector.py        # Evidence collection (skills, memory, heartbeats)
│   ├── analyzer.py         # Learning report generation
│   └── watcher.py          # Paperclip heartbeat poller
├── scripts/
│   ├── setup_companies.py  # Create
View on GitHub
GitHub Stars29
CategoryEducation
Updated11h ago
Forks5

Languages

Python

Security Score

95/100

Audited on Apr 8, 2026

No findings