The Render service that IS Bo — Taptico's AI assistant endpoint.
BoChat UI (Manus) → Bo Gateway (Render) → Claude API
↓
PostgreSQL (Render)
(conversation threads)
- Tough-love: Supportive but honest. Calls out bad ideas directly.
- Accountable: Tracks commitments and deadlines. Calls out drift.
- Supportive of wins: Celebrates successes genuinely, doesn't over-hype.
- 10th-grader explanations: Technical topics explained clearly, no unexplained jargon.
Headers:
Content-Type: application/json
X-BOCHAT-API-KEY: <shared-secret>
Request Body:
{
"userEmail": "nick@taptico.com",
"message": "Hello Bo",
"threadId": "optional-thread-id"
}Response:
{
"reply": "Bo's response text",
"threadId": "thread-id-for-continuation"
}Get full conversation history for a thread.
List user's conversation threads.
Public health check endpoint.
| Variable | Required | Description |
|---|---|---|
BOCHAT_API_KEY |
Yes | Shared secret for X-BOCHAT-API-KEY header |
LLM_API_KEY |
Yes | Anthropic API key |
DATABASE_URL |
Yes | Render Postgres connection string |
LLM_MODEL |
No | Claude model (default: claude-sonnet-4-20250514) |
- Create GitHub repo:
tapticocorp/bo-gateway - Push this code to the repo
- In Render: New + → Web Service → Connect to repo
- Settings:
- Name:
bo-gateway - Region: Virginia (US East)
- Runtime: Node
- Build:
npm install - Start:
npm start
- Name:
- Add environment variables
- Deploy!
npm install
cp .env.example .env
# Edit .env with your values
npm run devcurl -X POST http://localhost:3000/v1/chat \
-H "Content-Type: application/json" \
-H "X-BOCHAT-API-KEY: your_shared_secret" \
-d '{
"userEmail": "nick@taptico.com",
"message": "Hello Bo!"
}'