tasq/node_modules/agentic-flow/docs/supabase/QUICKSTART.md

366 lines
7.8 KiB
Markdown

# Supabase Federation Quick Start
Get up and running with Supabase real-time federation in 5 minutes!
---
## ⚡ 5-Minute Setup
### Step 1: Create Supabase Project (2 minutes)
1. Go to [supabase.com](https://supabase.com)
2. Click **Start your project**
3. Create new project:
- Name: `agentic-flow-federation`
- Database Password: (save this!)
- Region: Choose closest to you
4. Wait for project to provision
### Step 2: Get API Keys (30 seconds)
1. Go to **Project Settings** > **API**
2. Copy these values:
```
Project URL: https://xxxxx.supabase.co
anon/public key: eyJhbGc...
service_role key: eyJhbGc... (keep secret!)
```
### Step 3: Run Database Migration (1 minute)
1. In Supabase dashboard, go to **SQL Editor**
2. Click **New query**
3. Copy the entire contents of: `docs/supabase/migrations/001_create_federation_tables.sql`
4. Paste and click **Run**
5. You should see: ✅ Federation Hub schema created successfully!
### Step 4: Enable Realtime (30 seconds)
1. Go to **Database** > **Replication**
2. Find and enable these tables:
-`agent_sessions`
-`agent_memories`
-`agent_tasks`
-`agent_events`
3. Click **Save**
### Step 5: Configure Environment (1 minute)
Create or update your `.env` file:
```bash
# Supabase credentials
SUPABASE_URL=https://xxxxx.supabase.co
SUPABASE_ANON_KEY=eyJhbGc...
SUPABASE_SERVICE_ROLE_KEY=eyJhbGc...
# Federation settings
FEDERATION_VECTOR_BACKEND=hybrid
FEDERATION_MEMORY_SYNC=true
FEDERATION_HEARTBEAT_INTERVAL=30000
FEDERATION_BROADCAST_LATENCY=low
```
### Step 6: Test It! (30 seconds)
```bash
# Install dependencies if needed
npm install @supabase/supabase-js
# Run the example
npx tsx examples/realtime-federation-example.ts
```
You should see agents joining, communicating, and collaborating in real-time!
---
## 🎯 What You Get
After setup, you have:
**PostgreSQL database** with federation schema
**Real-time subscriptions** for instant updates
**Vector search** using pgvector
**Multi-agent coordination** infrastructure
**Presence tracking** for online agents
**Task orchestration** system
**Tenant isolation** via Row Level Security
---
## 🚀 Next Steps
### Try the Examples
```bash
# Multi-agent research team
npx tsx examples/realtime-federation-example.ts
# Or run specific examples programmatically
```
### Start Federation Hub
```bash
# Start the hub server
npx agentic-flow federation start --db-url $SUPABASE_URL
# In another terminal, spawn an agent
npx agentic-flow federation spawn \
--agent-id my-agent \
--tenant-id my-tenant \
--hub-endpoint $SUPABASE_URL
```
### Build Your First Multi-Agent System
```typescript
import { createRealtimeHub } from 'agentic-flow/federation/integrations/realtime-federation';
// Create agent
const agent = createRealtimeHub('my-agent', 'my-team');
await agent.initialize();
// Listen for messages
agent.on('message:task_assignment', async (msg) => {
console.log('Got task:', msg.payload.description);
// Do work...
await agent.reportTaskComplete(msg.payload.task_id, {
status: 'success',
});
});
// Update presence
await agent.updateStatus('online', 'Ready for tasks');
// Get team members
const team = agent.getActiveAgents();
console.log(`${team.length} agents online`);
```
---
## 💡 Common Use Cases
### 1. Research Team
Multiple agents collaborate on research:
```typescript
const researcher = createRealtimeHub('researcher', 'team');
const analyst = createRealtimeHub('analyst', 'team');
const writer = createRealtimeHub('writer', 'team');
// Researcher → Analyst → Writer workflow
```
### 2. Code Review
Agents review code in parallel:
```typescript
const reviewer1 = createRealtimeHub('reviewer-1', 'code-review');
const reviewer2 = createRealtimeHub('reviewer-2', 'code-review');
// Assign files to different reviewers
// Aggregate feedback
```
### 3. Customer Support
Agents handle support tickets:
```typescript
const router = createRealtimeHub('router', 'support');
const specialist1 = createRealtimeHub('billing-expert', 'support');
const specialist2 = createRealtimeHub('tech-expert', 'support');
// Route tickets to specialists based on type
```
### 4. Data Processing Pipeline
Distributed data processing:
```typescript
const coordinator = createRealtimeHub('coordinator', 'pipeline');
const worker1 = createRealtimeHub('worker-1', 'pipeline');
const worker2 = createRealtimeHub('worker-2', 'pipeline');
const worker3 = createRealtimeHub('worker-3', 'pipeline');
// Distribute work, track progress, aggregate results
```
---
## 🔧 Configuration Options
### Vector Backend
Choose storage strategy:
```bash
# AgentDB only (fastest, not persistent)
FEDERATION_VECTOR_BACKEND=agentdb
# Supabase pgvector only (persistent, slower)
FEDERATION_VECTOR_BACKEND=pgvector
# Hybrid (recommended - fast + persistent)
FEDERATION_VECTOR_BACKEND=hybrid
```
### Performance Tuning
```bash
# Lower latency, higher bandwidth
FEDERATION_BROADCAST_LATENCY=low
FEDERATION_HEARTBEAT_INTERVAL=15000 # 15s
# Higher latency, lower bandwidth
FEDERATION_BROADCAST_LATENCY=high
FEDERATION_HEARTBEAT_INTERVAL=60000 # 60s
```
### Memory Management
```bash
# Enable auto-sync to Supabase
FEDERATION_MEMORY_SYNC=true
# Disable for local-only
FEDERATION_MEMORY_SYNC=false
```
---
## 📊 Verify Setup
### Check Database
```sql
-- In Supabase SQL Editor
SELECT * FROM agent_sessions;
SELECT * FROM agent_memories;
SELECT * FROM agent_tasks;
-- Check realtime is enabled
SELECT schemaname, tablename,
CASE WHEN oid IN (SELECT objid FROM pg_publication_tables WHERE pubname = 'supabase_realtime')
THEN 'enabled'
ELSE 'disabled'
END as realtime_status
FROM pg_tables
WHERE tablename IN ('agent_sessions', 'agent_memories', 'agent_tasks', 'agent_events');
```
### Test Realtime
```typescript
import { createClient } from '@supabase/supabase-js';
const client = createClient(
process.env.SUPABASE_URL!,
process.env.SUPABASE_ANON_KEY!
);
// Subscribe to changes
const channel = client
.channel('test')
.on(
'postgres_changes',
{
event: 'INSERT',
schema: 'public',
table: 'agent_sessions',
},
(payload) => {
console.log('New session:', payload);
}
)
.subscribe();
// Test: Insert a session
await client.from('agent_sessions').insert({
session_id: 'test-session',
tenant_id: 'test-tenant',
agent_id: 'test-agent',
status: 'active',
});
// You should see "New session:" logged
```
---
## 🐛 Troubleshooting
### "Connection failed"
Check your credentials:
```bash
echo $SUPABASE_URL
echo $SUPABASE_ANON_KEY
```
Make sure they're set correctly.
### "Table does not exist"
Run the migration again:
```bash
# Copy docs/supabase/migrations/001_create_federation_tables.sql
# Paste into Supabase SQL Editor
# Run it
```
### "Realtime not working"
Enable realtime in Supabase dashboard:
1. Database > Replication
2. Enable for all federation tables
3. Save
### "Permission denied"
Check Row Level Security:
```sql
-- Disable RLS for testing (not for production!)
ALTER TABLE agent_sessions DISABLE ROW LEVEL SECURITY;
ALTER TABLE agent_memories DISABLE ROW LEVEL SECURITY;
```
Or set tenant context:
```sql
SET app.current_tenant = 'your-tenant-id';
```
---
## 📚 Learn More
- [Full Documentation](./SUPABASE-REALTIME-FEDERATION.md)
- [Federation Architecture](../architecture/FEDERATED-AGENTDB-EPHEMERAL-AGENTS.md)
- [API Reference](./SUPABASE-REALTIME-FEDERATION.md#-api-reference)
- [Examples](../../examples/realtime-federation-example.ts)
---
## 🆘 Getting Help
- GitHub Issues: [github.com/ruvnet/agentic-flow/issues](https://github.com/ruvnet/agentic-flow/issues)
- Supabase Docs: [supabase.com/docs](https://supabase.com/docs)
- pgvector Guide: [github.com/pgvector/pgvector](https://github.com/pgvector/pgvector)
---
**Ready to build?** Start with the examples and customize for your use case!
🚀 Happy building!