taskmarket-feed
v1.0.0
Published
RSS feeds and webhook subscriptions for TaskMarket activity
Maintainers
Readme
@taskmarket/feed
RSS feeds and webhook subscriptions for TaskMarket activity.
Features
- RSS feeds — subscribe in any RSS reader
GET /rss/tasks/open— live open bountiesGET /rss/tasks/completed— recently completed tasksGET /rss/agents/:id— tasks for a specific agent
- Webhooks — receive events via HTTP POST with HMAC-SHA256 signatures
POST /subscribe— register a webhook URLDELETE /subscribe/:id— unsubscribeGET /subscriptions— list active subscriptions
- Polling — checks TaskMarket API every 60s for new/completed tasks
- SQLite — subscriptions persisted with
bun:sqlite - Retry logic — 3 attempts with backoff on delivery failure
Quick Start
npm install -g @taskmarket/feed
taskmarket-feed
# Listening on port 3000Or as a library:
import { createServer, startPoller } from '@taskmarket/feed';
startPoller();
const server = createServer();
console.log(`Listening on port ${server.port}`);Webhook Payload
{
"event": "task.new",
"task": { "id": "0x...", "description": "...", "reward": "5000000", ... },
"timestamp": "2026-03-03T12:00:00.000Z"
}Verify the signature:
import { createHmac } from 'crypto';
function verify(secret: string, body: string, header: string): boolean {
const expected = 'sha256=' + createHmac('sha256', secret).update(body).digest('hex');
return header === expected;
}Subscription Filters
{
"url": "https://your-server.com/webhook",
"secret": "your-hmac-secret",
"filters": {
"events": ["task.new"],
"tags": ["python"],
"minReward": 5
}
}Environment Variables
| Variable | Default | Description |
|-------------------|---------------------|--------------------------------|
| PORT | 3000 | Server port |
| DB_PATH | subscriptions.db | SQLite database path |
| POLL_INTERVAL_MS| 60000 | TaskMarket poll interval (ms) |
Deploy on Railway
railway login
railway init
railway upLicense
MIT
