{"_id":"@agent-relay/pulse","_rev":"2-82dc5b1bf81b5c091aff08a2f02eb9e1","name":"@agent-relay/pulse","dist-tags":{"latest":"1.1.1"},"versions":{"1.0.0":{"name":"@agent-relay/pulse","version":"1.0.0","keywords":["agent","relay","visualization","animation","particle","svelte","ai-agents","message-flow"],"author":{"name":"Agent Workforce"},"license":"MIT","_id":"@agent-relay/pulse@1.0.0","maintainers":[{"name":"willwashburn","email":"will.washburn@gmail.com"},{"name":"khaliqgant","email":"khaliqgant@gmail.com"}],"homepage":"https://github.com/AgentWorkforce/relay-pulse#readme","bugs":{"url":"https://github.com/AgentWorkforce/relay-pulse/issues"},"dist":{"shasum":"d235dbe56099546cf66d54f4a93b3e6c97b16960","tarball":"https://registry.npmjs.org/@agent-relay/pulse/-/pulse-1.0.0.tgz","fileCount":8,"integrity":"sha512-/tuGXdoB8oaCVW99ZA3L9Yczh0XJ8N1svdNgUFnLli1y9b5Yo+LKPR2ZwtMe/YeF5lusT9rbymqgvl7Q9j0HLA==","signatures":[{"sig":"MEUCIBlqmv0Qm/57L2uIejkYgmI0JccYGVdz1HLdzX2R+DYbAiEA/hvjAdWii3OwTXAQqKIuu2B2ESW/yxZtqnDrZL4X43I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":27756},"type":"module","types":"./dist/index.d.ts","svelte":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","svelte":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"29fe8d2a9764ddd0bf9b7b88f963fbc4aef50289","scripts":{"dev":"node scripts/dev.js","build":"vite build && npm run package","check":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json","package":"svelte-kit sync && svelte-package && publint","preview":"vite preview","dev:vite":"vite dev","check:watch":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch","prepublishOnly":"npm run package"},"_npmUser":{"name":"khaliqgant","email":"khaliqgant@gmail.com"},"repository":{"url":"git+https://github.com/AgentWorkforce/relay-pulse.git","type":"git"},"_npmVersion":"10.9.4","description":"Visualize agent-to-agent communication in real-time with animated particle flows","directories":{},"_nodeVersion":"22.22.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.0.0","svelte":"^5.0.0","publint":"^0.2.12","typescript":"^5.0.0","tailwindcss":"^4.0.0","svelte-check":"^4.0.0","@sveltejs/kit":"^2.15.0","@sveltejs/package":"^2.5.7","@tailwindcss/vite":"^4.0.0","@sveltejs/adapter-auto":"^4.0.0","@sveltejs/vite-plugin-svelte":"^5.0.0"},"peerDependencies":{"svelte":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/pulse_1.0.0_1771242152538_0.012267921195191933","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@agent-relay/pulse","version":"1.1.1","description":"Visualize agent-to-agent communication in real-time with animated particle flows","keywords":["agent","relay","visualization","animation","particle","svelte","ai-agents","message-flow"],"author":{"name":"Agent Workforce"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/AgentWorkforce/relay-pulse.git"},"homepage":"https://github.com/AgentWorkforce/relay-pulse#readme","bugs":{"url":"https://github.com/AgentWorkforce/relay-pulse/issues"},"type":"module","svelte":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","svelte":"./dist/index.js","default":"./dist/index.js"},"./element":{"default":"./dist/element.js"}},"peerDependencies":{"svelte":"^5.0.0"},"scripts":{"dev":"node scripts/dev.js","dev:vite":"vite dev","build":"vite build && npm run package && npm run build:element","build:element":"vite build --config vite.config.element.js","package":"svelte-kit sync && svelte-package && publint","preview":"vite preview","check":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json","check:watch":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch","prepublishOnly":"npm run package"},"devDependencies":{"@types/node":"^22.0.0","@sveltejs/adapter-auto":"^4.0.0","@sveltejs/kit":"^2.15.0","@sveltejs/package":"^2.5.7","@sveltejs/vite-plugin-svelte":"^5.0.0","@tailwindcss/vite":"^4.0.0","publint":"^0.2.12","svelte":"^5.0.0","svelte-check":"^4.0.0","tailwindcss":"^4.0.0","typescript":"^5.0.0","vite":"^6.0.0"},"publishConfig":{"access":"public"},"gitHead":"66656410dddb746c29fc080c0352c9bcc1c72a7b","_id":"@agent-relay/pulse@1.1.1","_nodeVersion":"22.22.0","_npmVersion":"11.10.0","dist":{"integrity":"sha512-gAfgrLUhBRrN59Vw0Wwj8ponXo1u6kJUiC/odDN3lm0b+T8P0Cn9lUUc+LGJWsf6VtWa8FkluwEjRK6ZfPIuXQ==","shasum":"0696c8a37f0cb68e4f20b6563f08fbe3c95d66b2","tarball":"https://registry.npmjs.org/@agent-relay/pulse/-/pulse-1.1.1.tgz","fileCount":10,"unpackedSize":28337,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@agent-relay%2fpulse@1.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDRk/rX5edC6P6WqPm3oxQJ9X13pDhZBWeU7L1eaEwizwIhAOaMTcS7+OUbw79BB2X7BM75n6PI3Wto5JHsJ7CKSuwb"}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:15f688a1-9a5d-42ea-a731-766ff91e64a8"}},"directories":{},"maintainers":[{"name":"willwashburn","email":"will.washburn@gmail.com"},{"name":"khaliqgant","email":"khaliqgant@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/pulse_1.1.1_1771253597906_0.5395113093861421"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-16T11:42:32.460Z","modified":"2026-02-16T14:53:18.362Z","1.0.0":"2026-02-16T11:42:32.697Z","1.1.1":"2026-02-16T14:53:18.052Z"},"bugs":{"url":"https://github.com/AgentWorkforce/relay-pulse/issues"},"author":{"name":"Agent Workforce"},"license":"MIT","homepage":"https://github.com/AgentWorkforce/relay-pulse#readme","keywords":["agent","relay","visualization","animation","particle","svelte","ai-agents","message-flow"],"repository":{"type":"git","url":"git+https://github.com/AgentWorkforce/relay-pulse.git"},"description":"Visualize agent-to-agent communication in real-time with animated particle flows","maintainers":[{"name":"willwashburn","email":"will.washburn@gmail.com"},{"name":"khaliqgant","email":"khaliqgant@gmail.com"}],"readme":"# Relay Pulse ⚡\n\n> Watch AI agents communicate in real-time with mesmerizing particle animations\n\nRelay Pulse visualizes conversations between AI agents as glowing particles flowing through a network. See the invisible made visible — every message, every interaction, every moment of agent collaboration.\n\n![Relay Pulse Demo](./assets/relay-pulse-demo.gif)\n\n---\n\n## What is this?\n\nWhen AI agents collaborate using the [Agent Relay Protocol](https://github.com/AgentWorkforce/relay), they exchange hundreds or thousands of messages. Relay Pulse transforms these message logs into an animated visualization where:\n\n- **Agents** appear as colored nodes arranged in a circle\n- **Messages** travel as glowing particles between nodes\n- **Conversations** come alive as you watch the flow of communication\n\nIt's like watching a neural network fire in slow motion.\n\n---\n\n## Why use it?\n\n- **Debug agent interactions** - See which agents are talking and when\n- **Understand communication patterns** - Spot bottlenecks, central coordinators, or isolated agents\n- **Demo agent systems** - Show stakeholders how your agents collaborate\n- **Learn from transcripts** - Replay past conversations to understand agent behavior\n- **It looks cool** - Sometimes that's reason enough\n\n---\n\n## Quick Start\n\n```bash\n# Clone the repo\ngit clone https://github.com/AgentWorkforce/relay-pulse.git\ncd relay-pulse\n\n# Install dependencies\nnpm install\n\n# Run with default sample data\nnpm run dev\n\n# Or specify your own JSONL file\nnpm run dev -- --messages=/path/to/messages.jsonl\n```\n\nOpen http://localhost:5173\n\n---\n\n## Features\n\n| Feature | Description |\n|---------|-------------|\n| **Particle Animation** | Messages flow as glowing particles with trailing effects |\n| **Live Message Feed** | Sidebar shows message content in real-time |\n| **Pause on Hover** | Hover over the feed to pause and read |\n| **Click to Expand** | Click any message to see full content |\n| **Speed Control** | 0.5x to 4x playback speed |\n| **Auto Detection** | Automatically extracts agents from message data |\n| **Color Coding** | Each agent gets a consistent unique color |\n\n---\n\n## Relationship to Agent Relay\n\n[Agent Relay](https://github.com/AgentWorkforce/relay) is a protocol for AI agent-to-agent communication. When agents communicate via Relay, messages are persisted in JSONL format at:\n\n```\n~/.agent-relay/messages/YYYY-MM-DD.jsonl\n```\n\nRelay Pulse reads these message logs and animates them. It's the \"instant replay\" for your agent swarms.\n\n```\n┌─────────────────────────────────────────────────────────┐\n│                    Agent Relay                          │\n│  ┌─────────┐    messages    ┌─────────┐                │\n│  │ Agent A │ ──────────────▶│ Agent B │                │\n│  └─────────┘                └─────────┘                │\n│        │                          │                     │\n│        └──────────┬───────────────┘                     │\n│                   ▼                                     │\n│          ~/.agent-relay/messages/                       │\n│              2024-01-30.jsonl                           │\n└─────────────────────────────────────────────────────────┘\n                        │\n                        ▼\n┌─────────────────────────────────────────────────────────┐\n│                   Relay Pulse                           │\n│                                                         │\n│     npm run dev -- --messages=path/to/messages.jsonl    │\n│                                                         │\n│                    ◉ ─── ✦ ───▶ ◉                       │\n│                   ╱               ╲                     │\n│                  ◉ ◀─── ✦ ─────── ◉                     │\n│                                                         │\n│              Animated visualization                     │\n└─────────────────────────────────────────────────────────┘\n```\n\n---\n\n## Message Format\n\nRelay Pulse expects JSONL files in the [Agent Relay Protocol](https://github.com/AgentWorkforce/relay) format:\n\n```json\n{\"type\":\"message\",\"message\":{\"id\":\"abc123\",\"ts\":1234567890,\"from\":\"AgentA\",\"to\":\"AgentB\",\"kind\":\"message\",\"body\":\"Hello!\",\"status\":\"read\",\"is_urgent\":false,\"is_broadcast\":false}}\n```\n\n**Required fields:**\n| Field | Description |\n|-------|-------------|\n| `type` | \"message\" or \"status\" |\n| `message.id` | Unique message identifier |\n| `message.ts` | Unix timestamp (milliseconds) |\n| `message.from` | Sender agent name |\n| `message.to` | Recipient (agent name or channel like `#general`) |\n| `message.body` | Message content |\n| `message.kind` | Type: \"message\", \"state\", etc. |\n\n---\n\n## Usage Examples\n\n```bash\n# Visualize today's relay conversation\nnpm run dev -- --messages=~/.agent-relay/messages/$(date +%Y-%m-%d).jsonl\n\n# Visualize a specific conversation\nnpm run dev -- --messages=/path/to/my-agent-experiment/messages.jsonl\n\n# Use the included sample data\nnpm run dev\n```\n\n---\n\n## How It Works\n\n1. **Parser** reads the JSONL file and extracts message objects\n2. **Agent Detection** identifies unique agents from `from` and `to` fields\n3. **Layout Engine** positions agents in a circle on the canvas\n4. **Animation Loop** spawns particles for each message at configurable speed\n5. **Particle Physics** moves particles along paths with glowing trail effects\n6. **Message Feed** displays recent messages in a pauseable sidebar\n\n---\n\n## Tech Stack\n\n- **Framework**: SvelteKit 2 + Svelte 5\n- **Styling**: Tailwind CSS 4\n- **Animation**: HTML5 Canvas + requestAnimationFrame\n- **Build**: Vite 6\n- **Language**: TypeScript\n\n---\n\n## Development\n\n```bash\nnpm install        # Install dependencies\nnpm run dev        # Start dev server\nnpm run check      # Type check\nnpm run build      # Build for production\nnpm run preview    # Preview production build\n```\n\n---\n\n## Customization\n\nThe `AnimatedFlow` component accepts these props:\n\n```svelte\n<AnimatedFlow\n  messages={messages}        // Array of Message objects\n  animationSpeed={1}         // Playback speed multiplier (0.25 - 4)\n  particleSize={6}           // Size of message particles in pixels\n  showLabels={true}          // Show agent name labels below nodes\n  isPaused={false}           // Pause/resume animation (bindable)\n/>\n```\n\n---\n\n## Roadmap\n\n- [ ] Export as video/GIF\n- [ ] Timeline scrubbing\n- [ ] Filter by agent or channel\n- [ ] Search messages\n- [ ] Custom color themes\n- [ ] WebSocket support for live streaming\n\n---\n\n## License\n\nMIT\n\n---\n\n## Links\n\n- [Agent Relay Protocol](https://github.com/AgentWorkforce/relay) - The underlying communication protocol\n- [Agent Workforce](https://github.com/AgentWorkforce) - The ecosystem this belongs to\n\n---\n\n*Built with Svelte, animated with Canvas, powered by curiosity* ⚡\n","readmeFilename":"README.md"}