351 lines
12 KiB
Markdown
351 lines
12 KiB
Markdown
# 🔭 Moltbook Observatory
|
|
|
|
**Passive monitoring and analytics dashboard for [Moltbook](https://moltbook.com)** — the social network for AI agents.
|
|
|
|
The Observatory silently watches Moltbook, collecting posts, tracking agents, and analyzing trends over time. The longer it runs, the richer your dataset becomes.
|
|
|
|
---
|
|
|
|
🔥📄 **Report of first patch of data collected:** [RISK ASSESSMENT REPORT Moltbook Platform & Moltbot Ecosystem](https://zenodo.org/records/18444900)
|
|
|
|
🚀🌐 **Live Running Instance:** [moltbook-observatory.sushant.info.np](https://moltbook-observatory.sushant.info.np)
|
|
|
|
🧠📊 **Dataset Snapshot on HuggingFace:** [huggingface.co/datasets/SimulaMet/moltbook-observatory-archive](https://huggingface.co/datasets/SimulaMet/moltbook-observatory-archive)
|
|
|
|
|
|
## Media Coverage
|
|
|
|
Our research has been featured in:
|
|
|
|
### Academic/Professional Publications
|
|
- **[Communications of the ACM](https://cacm.acm.org/blogcacm/openclaw-a-k-a-moltbot-is-everywhere-all-at-once-and-a-disaster-waiting-to-happen/)** - Gary Marcus: "OpenClaw (a.k.a. Moltbot) is everywhere all at once, and a disaster waiting to happen" (February 2026)
|
|
|
|
### News Outlets
|
|
- **[CBC News](https://www.cbc.ca/news/business/moltbook-explainer-debunker-9.7072555)** - "Moltbook claims to be a social network for AI bots. But humans are behind its rapid growth" (February 5, 2026)
|
|
- **[The Register](https://www.theregister.com/2026/02/03/openclaw_security_problems/)** - "OpenClaw security problems" (February 3, 2026)
|
|
- **[UnHerd](https://unherd.com/2026/02/moltbook-wont-save-you/)** - Gary Marcus: "Moltbook won't save you" (February 4, 2026)
|
|
- **[Business Insider](https://www.businessinsider.com/gary-marcus-moltbook-openclaw-security-concerns-2026-2)** - "AI researcher Gary Marcus sounds off on Moltbook and OpenClaw's viral moment" (February 6, 2026)
|
|
|
|
### Academic Citations
|
|
- **[ArXiv preprint 2602.02625](https://arxiv.org/html/2602.02625)** - "OpenClaw Agents on Moltbook: Risky Instruction Sharing and Norm Enforcement in an Agent-Only Social Network" - Uses Moltbook Observatory Archive as primary dataset (February 2026)
|
|
|
|
## How It Works
|
|
|
|
The Observatory operates as a **background data collector** that continuously polls the Moltbook API:
|
|
|
|
```
|
|
┌─────────────────┐ ┌──────────────────┐ ┌─────────────────┐
|
|
│ Moltbook API │────▶│ Poller Jobs │────▶│ SQLite Database│
|
|
└─────────────────┘ └──────────────────┘ └─────────────────┘
|
|
│
|
|
▼
|
|
┌──────────────────┐
|
|
│ Web Dashboard │
|
|
│ + REST API │
|
|
└──────────────────┘
|
|
```
|
|
|
|
### Background Polling Schedule
|
|
|
|
| Job | Frequency | What It Collects |
|
|
|-----|-----------|------------------|
|
|
| **Posts** | Every 2 minutes | New posts from all submolts (50 per poll) |
|
|
| **Submolts** | Every hour | All communities, subscriber counts |
|
|
| **Agent Profiles** | Every 15 minutes | Karma, followers, descriptions |
|
|
| **Trends** | Every 10 minutes | Word frequency analysis |
|
|
| **Snapshots** | Every hour | Platform-wide metrics (for time-series) |
|
|
|
|
### Data Accumulation Over Time
|
|
|
|
The database grows continuously as new content is discovered:
|
|
|
|
| Running Time | Expected Posts | Expected Agents |
|
|
|--------------|----------------|-----------------|
|
|
| 1 hour | ~1,500 | ~100+ |
|
|
| 1 day | ~36,000 | All active agents |
|
|
| 1 week | ~252,000 | Complete agent history |
|
|
| 1 month | ~1,000,000+ | Full platform archive |
|
|
|
|
**Key insight**: Posts are fetched in reverse chronological order, so new posts are captured as they appear. Over time, you build a complete historical archive of Moltbook activity.
|
|
|
|
---
|
|
|
|
## Features
|
|
|
|
- **Live Feed** — Real-time stream of posts from the Moltbook ecosystem
|
|
- **Agent Directory** — Browse all discovered AI agents with karma, followers, descriptions
|
|
- **Submolt Browser** — All 100+ communities on Moltbook
|
|
- **Trend Analysis** — Word frequency, trending topics, and emerging themes
|
|
- **Sentiment Analysis** — Platform-wide mood using TextBlob polarity scoring
|
|
- **Analytics Dashboard** — Top posters leaderboard, activity heatmap, most active submolts
|
|
- **Hourly Snapshots** — Time-series data for historical analysis
|
|
- **Data Export** — Download everything as CSV or raw SQLite database
|
|
- **RESTful API** — Programmatic access for research and integrations
|
|
|
|
---
|
|
|
|
## Quick Start
|
|
|
|
### Prerequisites
|
|
|
|
- Python 3.11+
|
|
- A Moltbook API key (register an observer agent at [moltbook.com](https://moltbook.com))
|
|
|
|
### Installation
|
|
|
|
```bash
|
|
# Clone and enter directory
|
|
git clone https://github.com/kelkalot/moltbook-observatory.git
|
|
cd moltbook-observatory
|
|
|
|
# Install dependencies (or use pip install directly)
|
|
pip install fastapi uvicorn httpx jinja2 textblob apscheduler aiosqlite python-dotenv
|
|
|
|
# Configure your API key
|
|
cp .env.example .env
|
|
# Edit .env and set MOLTBOOK_API_KEY=your_key_here
|
|
```
|
|
|
|
### Run the Observatory
|
|
|
|
```bash
|
|
uvicorn observatory.main:app --port 8000
|
|
|
|
# Open http://localhost:8000
|
|
```
|
|
|
|
On startup, the Observatory will:
|
|
1. ✅ Create the SQLite database (if it doesn't exist)
|
|
2. ✅ Fetch all submolts immediately (~100 communities)
|
|
3. ✅ Fetch the latest 50 posts
|
|
4. ✅ Start background polling jobs
|
|
5. ✅ Serve the web dashboard
|
|
|
|
**Leave it running** — the longer it runs, the more data you collect.
|
|
|
|
---
|
|
|
|
## What Gets Stored
|
|
|
|
### Agents Table
|
|
- Name, ID, description
|
|
- Karma score, follower/following counts
|
|
- Owner X handle (if claimed)
|
|
- First seen / last active timestamps
|
|
|
|
### Posts Table
|
|
- Full content (title + body)
|
|
- Author, submolt, timestamp
|
|
- Upvotes, downvotes, comment count
|
|
- URL for reference
|
|
|
|
### Submolts Table
|
|
- Name, description
|
|
- Subscriber count, post count
|
|
- Avatar/banner URLs
|
|
|
|
### Snapshots Table (Time-Series)
|
|
- Hourly platform metrics
|
|
- Total agents, posts, comments
|
|
- Average sentiment
|
|
- Top trending words
|
|
|
|
---
|
|
|
|
## API Endpoints
|
|
|
|
| Endpoint | Description |
|
|
|----------|-------------|
|
|
| `GET /api/feed` | Recent posts (with `?since=timestamp&limit=50`) |
|
|
| `GET /api/stats` | Current platform metrics |
|
|
| `GET /api/trends` | Trending words (with `?hours=24`) |
|
|
| `GET /api/agents` | All agents (with `?sort=karma&limit=50`) |
|
|
| `GET /api/agents/{name}` | Single agent profile + posts |
|
|
| `GET /api/submolts` | All communities |
|
|
| `GET /api/analytics/top-posters` | Agents ranked by post count |
|
|
| `GET /api/analytics/activity-by-hour` | Post activity by hour (UTC) |
|
|
| `GET /api/analytics/submolt-activity` | Submolts ranked by post activity |
|
|
| `GET /api/export/posts.csv` | Download all posts as CSV |
|
|
| `GET /api/export/agents.csv` | Download all agents as CSV |
|
|
| `GET /api/export/database.db` | Download raw SQLite database |
|
|
|
|
---
|
|
|
|
## Configuration
|
|
|
|
| Variable | Description | Default |
|
|
|----------|-------------|---------|
|
|
| `MOLTBOOK_API_KEY` | Your Moltbook API key | **Required** |
|
|
| `DATABASE_PATH` | SQLite database location | `./data/observatory.db` |
|
|
| `POLL_POSTS_INTERVAL` | Seconds between post fetches | `120` (2 min) |
|
|
| `POLL_AGENTS_INTERVAL` | Seconds between agent updates | `900` (15 min) |
|
|
| `POLL_SUBMOLTS_INTERVAL` | Seconds between submolt fetches | `3600` (1 hour) |
|
|
|
|
---
|
|
|
|
## Deployment (Long-Running)
|
|
|
|
For continuous data collection, deploy to a server:
|
|
|
|
### VPS / Cloud Server (Recommended)
|
|
|
|
**On any Ubuntu/Debian server:**
|
|
|
|
```bash
|
|
# Clone the repository
|
|
git clone https://github.com/kelkalot/moltbook-observatory.git
|
|
cd moltbook-observatory
|
|
|
|
# Install Python 3.11+ and dependencies
|
|
sudo apt update && sudo apt install python3.11 python3-pip -y
|
|
pip install fastapi uvicorn httpx jinja2 textblob apscheduler aiosqlite python-dotenv
|
|
|
|
# Configure your API key
|
|
cp .env.example .env
|
|
nano .env # Add your MOLTBOOK_API_KEY
|
|
|
|
# Run with screen (keeps running after SSH disconnect)
|
|
screen -S observatory
|
|
uvicorn observatory.main:app --host 0.0.0.0 --port 8000
|
|
# Press Ctrl+A then D to detach
|
|
|
|
# Or use systemd for auto-restart
|
|
sudo nano /etc/systemd/system/moltbook-observatory.service
|
|
```
|
|
|
|
**Systemd service file:**
|
|
```ini
|
|
[Unit]
|
|
Description=Moltbook Observatory
|
|
After=network.target
|
|
|
|
[Service]
|
|
User=ubuntu
|
|
WorkingDirectory=/home/ubuntu/moltbook-observatory
|
|
ExecStart=/usr/bin/python3 -m uvicorn observatory.main:app --host 0.0.0.0 --port 8000
|
|
Restart=always
|
|
RestartSec=10
|
|
|
|
[Install]
|
|
WantedBy=multi-user.target
|
|
```
|
|
|
|
```bash
|
|
sudo systemctl daemon-reload
|
|
sudo systemctl enable moltbook-observatory
|
|
sudo systemctl start moltbook-observatory
|
|
```
|
|
|
|
### Railway / Fly.io
|
|
|
|
1. Push to GitHub
|
|
2. Deploy from repo
|
|
3. **Add a persistent volume** at `/data` (critical for database persistence!)
|
|
4. Set `MOLTBOOK_API_KEY` env var
|
|
|
|
### Docker
|
|
|
|
```bash
|
|
docker build -t moltbook-observatory .
|
|
docker run -d \
|
|
-p 8080:8080 \
|
|
-e MOLTBOOK_API_KEY=your_key \
|
|
-v observatory-data:/data \
|
|
--restart unless-stopped \
|
|
moltbook-observatory
|
|
```
|
|
|
|
---
|
|
|
|
## Sample Data
|
|
|
|
The `sample_data/` directory contains example exports from the observatory:
|
|
|
|
| File | Description | Records |
|
|
|------|-------------|---------|
|
|
| `posts_sample.csv` | All collected posts with content | 262 |
|
|
| `agents_sample.csv` | All discovered agents with stats | 255 |
|
|
| `submolts_sample.csv` | All communities | 100 |
|
|
|
|
These samples demonstrate the data schema and can be used for testing analysis pipelines.
|
|
|
|
---
|
|
|
|
## Use Cases
|
|
|
|
### Research
|
|
- Study AI agent behavior and communication patterns
|
|
- Track the evolution of AI-to-AI social dynamics
|
|
- Analyze sentiment trends across time
|
|
|
|
### Analytics
|
|
- Identify popular topics and emerging discussions
|
|
- Track agent growth (karma, followers)
|
|
- Compare activity across different submolts
|
|
|
|
### Archival
|
|
- Build a historical record of early AI social networks
|
|
- Export data for academic papers
|
|
- Create reproducible datasets
|
|
|
|
---
|
|
|
|
## Project Structure
|
|
|
|
```
|
|
moltbook-observatory/
|
|
├── observatory/
|
|
│ ├── main.py # FastAPI app + lifespan
|
|
│ ├── config.py # Environment configuration
|
|
│ ├── database/ # SQLite schema + connection
|
|
│ ├── poller/ # API client + scheduler + processors
|
|
│ ├── analyzer/ # Trends, sentiment, statistics
|
|
│ └── web/ # Routes + Jinja2 templates
|
|
├── sample_data/ # Example CSV exports
|
|
├── data/ # SQLite database (gitignored)
|
|
├── pyproject.toml # Dependencies
|
|
├── Dockerfile # Container deployment
|
|
└── .env.example # Configuration template
|
|
```
|
|
|
|
---
|
|
|
|
## Philosophy
|
|
|
|
- **No manipulation** — We observe, never post or interact
|
|
- **Pure archival** — Every post, every agent, everything
|
|
- **Research-grade** — Data should be exportable and citable
|
|
- **Time-aware** — Not just current state, but historical trends
|
|
|
|
---
|
|
|
|
## Citation
|
|
|
|
If you use Moltbook Observatory in your research, please cite:
|
|
|
|
```bibtex
|
|
@software{moltbook_observatory,
|
|
author = {Riegler, Michael A. and Gautam, Sushant},
|
|
title = {Moltbook Observatory: Passive Monitoring Dashboard for AI Social Networks},
|
|
year = {2026},
|
|
url = {https://github.com/kelkalot/moltbook-observatory},
|
|
note = {A research tool for collecting and analyzing data from Moltbook, the social network for AI agents}
|
|
}
|
|
```
|
|
|
|
**Plain text citation:**
|
|
> Riegler, M. A., & Gautam, S. (2026). Moltbook Observatory: Passive Monitoring Dashboard for AI Social Networks. GitHub. https://github.com/kelkalot/moltbook-observatory
|
|
|
|
---
|
|
|
|
## Contributors
|
|
|
|
- [Michael A. Riegler](https://github.com/kelkalot)
|
|
- [Sushant Gautam](https://github.com/SushantGautam)
|
|
|
|
---
|
|
|
|
## License
|
|
|
|
MIT
|