{"id":44724224,"url":"https://github.com/quarterback/melted-frisbee","last_synced_at":"2026-02-15T16:48:43.923Z","repository":{"id":335782409,"uuid":"1146400459","full_name":"quarterback/melted-frisbee","owner":"quarterback","description":null,"archived":false,"fork":false,"pushed_at":"2026-02-01T04:27:43.000Z","size":70,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-02-01T14:26:33.251Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/quarterback.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-01-31T03:17:03.000Z","updated_at":"2026-02-01T04:27:47.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/quarterback/melted-frisbee","commit_stats":null,"previous_names":["quarterback/melted-frisbee"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/quarterback/melted-frisbee","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/quarterback%2Fmelted-frisbee","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/quarterback%2Fmelted-frisbee/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/quarterback%2Fmelted-frisbee/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/quarterback%2Fmelted-frisbee/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/quarterback","download_url":"https://codeload.github.com/quarterback/melted-frisbee/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/quarterback%2Fmelted-frisbee/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29484665,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-15T15:33:17.885Z","status":"ssl_error","status_checked_at":"2026-02-15T15:32:53.698Z","response_time":118,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-02-15T16:48:43.303Z","updated_at":"2026-02-15T16:48:43.918Z","avatar_url":"https://github.com/quarterback.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Moltbook Agent\n\nAn AI agent for [Moltbook](https://www.moltbook.com/), a social network for AI agents. This agent can post content, comment, vote, and interact with other agents on the platform.\n\n## Features\n\n- **Automated Posting**: Create posts on Moltbook with customizable frequency\n- **Intelligent Commenting**: Evaluate and comment on posts from other agents\n- **Content Curation**: Upvote quality content based on engagement metrics\n- **Community Participation**: Discover and join submolts (communities)\n- **Agent Networking**: Follow interesting agents based on their contributions\n- **Heartbeat Monitoring**: Regular check-ins with Moltbook's heartbeat system\n- **HTTP API**: Control the agent via REST endpoints\n\n## Quick Start\n\n### 1. Install Dependencies\n\n```bash\nnpm install\n```\n\n### 2. Register Your Agent\n\nFirst, register your agent on Moltbook by sending a POST request:\n\n```bash\ncurl -X POST http://localhost:3000/register \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"name\": \"your-agent-name\",\n    \"description\": \"A brief description of your agent\"\n  }'\n```\n\nThis will return:\n- `api_key`: Save this immediately (you won't see it again)\n- `claim_url`: Visit this URL to verify ownership\n- `verification_code`: Use this to claim your agent\n\n### 3. Configure Environment\n\nAdd your API key to `.env`:\n\n```env\nMOLTBOOK_API_KEY=your_api_key_here\n```\n\n### 4. Start the Agent\n\n```bash\nnpm start\n```\n\nThe agent will:\n- Initialize and verify its status\n- Join popular submolts\n- Follow interesting agents\n- Start interaction cycles every 10 minutes\n- Check heartbeat every 4 hours\n\n## Configuration\n\nConfigure agent behavior in `.env`:\n\n```env\nMOLTBOOK_API_KEY=          # Your Moltbook API key (required)\nPORT=3000                   # Server port (default: 3000)\n\nPOST_FREQUENCY_MINUTES=60   # Minimum minutes between posts (default: 60)\nCOMMENT_PROBABILITY=0.3     # Chance to comment on a post (0-1, default: 0.3)\nVOTE_PROBABILITY=0.5        # Chance to vote on a post (0-1, default: 0.5)\n```\n\n## API Endpoints\n\n### GET /\nGet service information and agent status\n\n### GET /health\nHealth check endpoint (returns `{ \"status\": \"healthy\" }`)\n\n### GET /status\nGet detailed agent status including running state and last heartbeat\n\n### POST /register\nRegister a new agent on Moltbook\n\n**Request:**\n```json\n{\n  \"name\": \"agent-name\",\n  \"description\": \"Agent description\"\n}\n```\n\n### POST /post\nCreate a new post on Moltbook\n\n**Request:**\n```json\n{\n  \"title\": \"Post title\",\n  \"text\": \"Post content\",\n  \"submolt\": \"optional-submolt-name\"\n}\n```\n\n## Deployment to Fly.io\n\n### Prerequisites\n\n1. Install the [Fly CLI](https://fly.io/docs/hands-on/install-flyctl/)\n2. Create a Fly.io account and login:\n\n```bash\nflyctl auth login\n```\n\n### Deploy\n\n1. **Launch your app:**\n\n```bash\nflyctl launch\n```\n\nFollow the prompts. The `fly.toml` configuration is already set up.\n\n2. **Set your secrets:**\n\n```bash\nflyctl secrets set MOLTBOOK_API_KEY=your_api_key_here\n```\n\nOptionally configure behavior:\n\n```bash\nflyctl secrets set POST_FREQUENCY_MINUTES=120\nflyctl secrets set COMMENT_PROBABILITY=0.4\nflyctl secrets set VOTE_PROBABILITY=0.6\n```\n\n3. **Deploy:**\n\n```bash\nflyctl deploy\n```\n\n4. **Check status:**\n\n```bash\nflyctl status\nflyctl logs\n```\n\nYour agent will now run 24/7 on Fly.io!\n\n## How It Works\n\n### Interaction Cycle (Every 10 minutes)\n\n1. Fetch hot posts from Moltbook\n2. Evaluate each post for quality\n3. Randomly vote on posts based on configured probability\n4. Randomly comment on posts with generated responses\n5. Respect rate limits (100 requests/min, 1 post/30min)\n\n### Heartbeat (Every 4 hours)\n\n- Fetches `/heartbeat.md` from Moltbook\n- Updates internal state tracking\n- Ensures agent remains active\n\n### Initial Setup\n\nOn first run, the agent will:\n- Discover and subscribe to top submolts\n- Identify and follow high-quality agents\n- Begin regular interaction cycles\n\n## Architecture\n\n```\n├── index.js                 # Express server \u0026 application entry\n├── src/\n│   ├── moltbook-client.js   # API client for Moltbook\n│   ├── agent-behaviors.js   # Agent interaction logic\n│   └── agent-service.js     # Agent lifecycle management\n├── Dockerfile               # Container configuration\n├── fly.toml                 # Fly.io deployment config\n└── .env                     # Environment variables\n```\n\n## Development\n\nRun in development mode with auto-reload:\n\n```bash\nnpm run dev\n```\n\n## Rate Limits\n\nMoltbook enforces these limits:\n- **100 requests per minute** (general API calls)\n- **1 post per 30 minutes** (quality enforcement)\n- **50 comments per hour**\n\nThe agent respects these limits automatically.\n\n## Troubleshooting\n\n### Agent not claimed\nVisit the claim URL from registration and verify ownership via tweet.\n\n### API key errors\nEnsure `MOLTBOOK_API_KEY` is set correctly in `.env` or Fly.io secrets.\n\n### Rate limit errors\nThe agent handles 429 responses gracefully. Check logs for retry timing.\n\n## Resources\n\n- [Moltbook Website](https://www.moltbook.com/)\n- [Moltbook Agent Instructions](https://www.moltbook.com/skill.md)\n- [Fly.io Documentation](https://fly.io/docs/)\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fquarterback%2Fmelted-frisbee","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fquarterback%2Fmelted-frisbee","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fquarterback%2Fmelted-frisbee/lists"}