๐Ÿ“š Examples

Practical code examples for common AgentRegistry use cases.

๐Ÿš€ Quick Publish

Publish a package to your local registry:

# In your package directory npm config set registry http://localhost:4873 # Publish npm publish # Verify curl http://localhost:4873/my-package | jq .

๐Ÿ“ฆ Programmatic Publish (Node.js)

Publish a package programmatically:

const fs = require('fs'); async function publishPackage() { const tarball = fs.readFileSync('./my-package-1.0.0.tgz'); const payload = { name: 'my-package', versions: { '1.0.0': { name: 'my-package', version: '1.0.0', main: 'index.js' } }, 'dist-tags': { latest: '1.0.0' }, _attachments: { 'my-package-1.0.0.tgz': { data: tarball.toString('base64') } } }; const res = await fetch('http://localhost:4873/my-package', { method: 'PUT', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(payload) }); console.log(await res.json()); } publishPackage();

๐Ÿ”Œ WebSocket Admin Client

Connect to the admin WebSocket and fetch stats:

// First get the token from admin page const adminRes = await fetch('http://localhost:4873/-/admin'); const html = await adminRes.text(); const token = html.match(/ADMIN_SESSION_TOKEN\s*=\s*['"]([^'"]+)['"]/)[1]; // Connect WebSocket const ws = new WebSocket(`ws://localhost:4873/-/admin/ws?token=${token}`); ws.onmessage = (e) => { const msg = JSON.parse(e.data); console.log(msg.type, msg.data); }; ws.onopen = () => { // Request stats ws.send(JSON.stringify({ action: 'getStats', payload: {} })); // Request packages ws.send(JSON.stringify({ action: 'getPackages', payload: {} })); };

๐Ÿ›ก๏ธ IP Allowlist Configuration

Manage IP allowlist via WebSocket:

// Enable allowlist in 'allow' mode ws.send(JSON.stringify({ action: 'updateAllowlistConfig', payload: { enabled: true, mode: 'allow' } })); // Add allowed IP range ws.send(JSON.stringify({ action: 'addAllowlistEntry', payload: { pattern: '192.168.1.0/24', description: 'Local network' } })); // Test if IP would be allowed ws.send(JSON.stringify({ action: 'testIP', payload: { ip: '192.168.1.50' } }));

๐Ÿ” Search Packages

Search both local and upstream packages:

async function searchPackages(query) { const res = await fetch(`http://localhost:4873/-/v1/search?text=${query}`); const data = await res.json(); return data.objects.map(obj => ({ name: obj.package.name, version: obj.package.version, description: obj.package.description, isLocal: obj.package.isLocal })); } // Usage const results = await searchPackages('lodash'); console.log(results);

๐Ÿ’พ Backup and Restore

Use the CLI for backups:

# Create backup bun run cli.ts backup # Output: Created backup: backups/agentregistry-backup-2026-01-24.zip # Restore from backup bun run cli.ts restore backups/agentregistry-backup-2026-01-24.zip # List available backups ls -la backups/

๐Ÿงช Test Package Publishing

Quick test to verify registry is working:

#!/bin/bash # Create test package mkdir -p /tmp/test-pkg && cd /tmp/test-pkg echo '{"name":"test-pkg","version":"1.0.0"}' > package.json echo 'module.exports = "hello"' > index.js # Pack and publish npm pack npm publish --registry http://localhost:4873 # Verify curl -s http://localhost:4873/test-pkg | jq '.versions["1.0.0"].name' # Output: "test-pkg" # Cleanup npm unpublish test-pkg@1.0.0 --registry http://localhost:4873 --force