NLIP Swarm is a University of Delaware senior design project built in collaboration with IBM to explore the Natural Language Interaction Protocol (NLIP) in a real-world sustainability scenario. Our team is creating a smartphone app paired with server-side AI agents that help farmers in Tanzania and Uganda access translation, lookup, and sensor-driven insights without needing proprietary vendor stacks.
Dinesh’s plan splits the work into two tracks:
- Mobile experience – a React Native (Expo) application that can use onboard sensors, collect farmer input, and securely exchange NLIP envelopes with the backend.
- Agent registrar & swarm manager – Python services that host and orchestrate NLIP-compliant agents (translation, text lookup, audio/image understanding today; more sophisticated chains later).
The long-term objective is to ship a reference implementation that demonstrates how vendor-neutral NLIP traffic can move between lightweight edge clients and richer cloud-based reasoning services.
NLIP is an open, multi-modal, JSON-based protocol for agent-to-agent communication. In NLIP Swarm we:
- Use NLIP envelopes to route requests between the Expo client and Python agents.
- Adhere to HTTPS bindings for transport, leaving room for future upgrades (WebRTC, QUIC, etc.).
- Focus on policy-aware, secure message exchange while keeping the rest of the stack cloud-agnostic.
- Framework: React Native with Expo
- Routing: Expo Router (file-based routing)
- Language: TypeScript
- Language: Python
frontend/ # Expo mobile client that captures text/audio/image inputs
backend/ # Python agent services, registrar, and NLIP session server
compose.yaml# Docker Compose for running both tiers together
nlip_swarm/
├── frontend/ # React Native mobile application
│ ├── app/ # Expo Router file-based routes
│ ├── components/ # Reusable UI components
│ ├── constants/ # Theme and app constants
│ └── hooks/ # Custom React hooks
└── backend/ # Python backend services
-
Navigate to the frontend directory:
cd frontend -
Install dependencies:
npm install
-
Start the development server:
npm run start
-
Open the app:
- Press
ifor iOS simulator - Press
afor Android emulator - Press
wfor web browser - Scan QR code with Expo Go app on your device
- Press
-
Navigate to the backend directory:
cd backend -
Install Requirements
pip install -r requirements.txt
-
Run The backend server
python -m app.system.main
-
Create environment files from the variables below, or set them directly in your shell.
Frontend — create
frontend/.env:EXPO_PUBLIC_API_BASE=http://localhost:8024Backend — create
backend/.env:DATABASE_URL=postgresql+asyncpg://postgres:postgres@db:5432/nlip_db NLIP_LOG_LEVEL=INFO # Optional: override LLM endpoint and model OLLAMA_URL=http://ollama:11434 OLLAMA_MODEL=ai/llama3.2:3B-Q4_0 -
Start the full stack with Docker:
docker compose up --build
-
The coordinator API will be available at http://localhost:8024, and Expo DevTools will be available on the forwarded ports.
-
If you are using Expo Go on a physical device, set
EXPO_PUBLIC_API_BASEto your host LAN IP before running compose.
- John Fulkerson jtfulky@udel.edu
- Mason Kulikowski masonkul@udel.edu
- Christopher Calderone ccald@udel.edu
- Kevin Kramer kkramer@udel.edu
- Benjamin Zlatin bzlatin@udel.edu
- Tyler Walsh tjwalsh@udel.edu