A multi-agent volunteer management platform designed to support the lifecycle of volunteers and needs in the SERVE ecosystem. Built as a Digital Public Good aligned with DPGA.
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β SERVE AI Platform β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β ββββββββββββββββ β
β β serve-ai-ui β React Frontend β
β β Port 3000 β β
β ββββββββ¬ββββββββ β
β β HTTP β
β βΌ β
β ββββββββββββββββββββ β
β β serve-orchestratorβ Coordination Layer β
β β Port 8001 β β
β ββββββββ¬ββββββββββββ β
β β HTTP β
β βΌ β
β ββββββββββββββββββββββββββββββ β
β β serve-onboarding-agent- β Onboarding Agent β
β β service Port 8002 β (future agents added here) β
β ββββββββ¬ββββββββββββββββββββββ β
β β HTTP β
β βΌ β
β ββββββββββββββββββββββββββββββ βββββββββββββββ β
β β serve-agentic-mcp-service ββββββββββΆβ PostgreSQL β β
β β Port 8003 β β Port 5432 β β
β β MCP Capabilities + DB β βββββββββββββββ β
β ββββββββββββββββββββββββββββββ β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
/app/
βββ serve-ai-ui/ # React Frontend
β βββ src/
β βββ public/
β βββ package.json
β βββ Dockerfile
β
βββ serve-orchestrator/ # Coordination Service
β βββ app/
β β βββ api/
β β βββ service/
β β βββ schemas/
β β βββ clients/
β βββ main.py
β βββ requirements.txt
β βββ Dockerfile
β
βββ serve-onboarding-agent-service/ # Onboarding Agent
β βββ app/
β β βββ api/
β β βββ service/
β β βββ schemas/
β β βββ clients/
β βββ main.py
β βββ requirements.txt
β βββ Dockerfile
β
βββ serve-agentic-mcp-service/ # MCP + Database
β βββ app/
β β βββ api/
β β βββ service/
β β βββ schemas/
β β βββ models/
β β βββ db/
β βββ main.py
β βββ requirements.txt
β βββ Dockerfile
β
βββ docker-compose.yml # All services + Postgres
βββ .env.example # Environment template
βββ README.md
Service
Port
Description
serve-ai-ui
3000
React frontend with role-based views
serve-orchestrator
8001
Central coordination layer
serve-onboarding-agent-service
8002
Onboarding agent with LLM
serve-agentic-mcp-service
8003
MCP capabilities + database
postgres
5432
PostgreSQL with persistent volume
# Clone the repository
git clone < repo-url>
cd serve-ai
# Create environment file
cp .env.example .env
# Edit .env and add your EMERGENT_LLM_KEY
# Start all services
docker-compose up -d
# View logs
docker-compose logs -f
# Access the application
open http://localhost:3000
docker-compose down -v # Removes volumes
docker-compose up -d
Channel-agnostic coordination layer
Receives interaction requests from UI or channel adapters
Resolves or creates sessions via MCP
Determines workflow and active agent
Routes requests to agent services via HTTP
Does NOT perform conversational logic
Does NOT access database directly
serve-onboarding-agent-service
Implements onboarding conversational logic
Receives session context from orchestrator
Generates responses using LLM (Claude Sonnet 4.5)
Calls MCP capabilities over HTTP
Returns structured agent responses
Does NOT access database directly
serve-agentic-mcp-service
Exposes domain capabilities as HTTP APIs
Owns ALL database access and persistence
Stores sessions, profiles, messages, events
Returns structured capability responses
React frontend with Tailwind CSS
Role-based views (Volunteer, Ops, Admin)
Calls orchestrator via HTTP
Endpoint
Method
Description
/interact
POST
Process chat interaction
/session/{id}
GET
Get session state
/sessions
GET
List all sessions
/health
GET
Health check
Endpoint
Method
Description
/turn
POST
Process agent turn
/health
GET
Health check
Endpoint
Method
Description
/start-session
POST
Create new session
/resume-context
POST
Resume existing session
/advance-state
POST
Advance to next state
/save-confirmed-fields
POST
Save profile fields
/get-missing-fields
POST
Get missing required fields
/save-message
POST
Save conversation message
/log-event
POST
Log telemetry event
/session/{id}
GET
Get full session
/sessions
GET
List all sessions
/telemetry/{id}
GET
Get telemetry events
Table
Description
sessions
Interaction lifecycle tracking
session_events
State transitions and routing
volunteer_profiles
Volunteer information
conversation_messages
Chat history
memory_summaries
Long-term context
handoff_events
Agent transitions
telemetry_events
Operational telemetry
State
Description
init
Initial welcome
intent_discovery
Understanding motivation
purpose_orientation
Introducing SERVE
eligibility_confirmation
Gathering basic info
capability_discovery
Exploring skills
profile_confirmation
Reviewing info
onboarding_complete
Finished
paused
Session paused
EMERGENT_LLM_KEY=your-key-here
Variable
Description
MCP_SERVICE_URL
URL to MCP service
ONBOARDING_AGENT_URL
URL to onboarding agent
CORS_ORIGINS
Allowed CORS origins
serve-onboarding-agent-service
Variable
Description
MCP_SERVICE_URL
URL to MCP service
LLM_PROVIDER
LLM provider (claude/openai/gemini)
LLM_MODEL
Model name
EMERGENT_LLM_KEY
LLM API key
serve-agentic-mcp-service
Variable
Description
DATABASE_URL
PostgreSQL connection string
CORS_ORIGINS
Allowed CORS origins
To add a new agent (e.g., Selection Agent):
Create serve-selection-agent-service/ following the onboarding pattern
Add service to docker-compose.yml
Register agent URL in orchestrator's agent client
Implement MCP capabilities for the new domain
Frontend : React, Tailwind CSS, shadcn/ui
Backend : Python 3.11, FastAPI
Database : PostgreSQL with SQLAlchemy
LLM : Claude Sonnet 4.5 (configurable)
Infrastructure : Docker Compose
Digital Public Good - DPGA Aligned