Your best technician's memory, in every technician's ear.
Voice-native field service memory for deskless workers. Built at the ElevenLabs × Sauna Hack Night (July 16, 2026).
ElevenLabs = mouth and ears. Sauna = brain and shared memory. FieldMemory = the voice front door.
Tap the mic, ask about a site, and watch structured visits appear in the Team Memory panel — parts, follow-ups, and access notes.
Sauna connected to FieldMemory as a custom MCP connector. Asking for the latest Hillsdale visit pulls live team memory — technician, equipment, prior visits — into the Sauna Space dashboard.
Sauna says: stop asking your AI for answers, start asking it for tools.
We say: stop typing into your tools, start talking to them.
FieldMemory is the first voice-native Sauna App — for the 80% of workers who can't use a keyboard on the job.
Problem: Field techs (HVAC, electrical, medical equipment) can't type on rooftops. Job history lives in their heads. Documentation never happens. Repeat truck rolls cost $150–$500 each.
Product:
- Recall — arrive at a site, ask by voice, get full history / warranty / access notes
- Capture — ramble a messy debrief; parts, follow-ups, and codes write into shared memory
- Multiplayer — the next tech (or Sauna at HQ) asks what happened and hears what was just logged
Browser (Tech A / Tech B)
│ ElevenLabs Conversational AI widget
▼
ElevenLabs Agent ──webhook tools──► Express relay (tunnel)
│
┌────────────┴────────────┐
▼ ▼
SQLite memory.db Anthropic Claude
sites / equipment briefing + debrief
/ visits structuring
▲
│
Sauna Space ──MCP──► POST/GET /mcp
| Layer | Choice |
|---|---|
| Voice | ElevenLabs Conversational AI + web widget |
| Relay | Node + Express |
| Memory | better-sqlite3 (memory.db) |
| LLM | Anthropic claude-sonnet-4-6 |
| Sauna | Custom MCP connector (/mcp) |
| Frontend | Static HTML (Gumroad dark theme) |
| Beat | Who | Say | Prove |
|---|---|---|---|
| 1 Recall | Tech A | “I just pulled up to the Hillsdale Medical HVAC unit.” | Spoken briefing: prior visits, warranty, access code |
| 2 Capture | Tech A | Debrief with FM-2250, line replacement, code 4482 | New card appears in Team Memory |
| 3 Multiplayer | Tech B or Sauna | “What do I need to know for Hillsdale tomorrow?” | Answer includes FM-2250 + 4482 |
Close: That knowledge used to leave in the truck. Now it compounds.
npm install
cp .env.example .env # fill keys (see below)
node seed.js # 2 sites, 3 visits (Hillsdale roof code starts at 7715)
node server.js # http://localhost:3000| Variable | Required | Purpose |
|---|---|---|
ANTHROPIC_API_KEY |
Yes (for spoken briefings) | Claude synthesis + debrief JSON |
ELEVENLABS_API_KEY |
For agent create/update script | Dashboard tool wiring |
ELEVENLABS_AGENT_ID |
For widget | Embeds voice agent on / |
SAUNA_API_BASE / SAUNA_API_KEY |
Optional | Push write-through (Track A stretch) |
PORT |
No (default 3000) |
HTTP port |
Never commit
.env. It is gitignored.
Expose localhost (ngrok or cloudflared), then point agent tools at it:
node create-agent.js https://<your-tunnel-host>Creates/updates tools: site_briefing, log_debrief, ask_team_memory.
Register a custom MCP connector in Sauna pointing at:
https://<your-tunnel-host>/mcp
Tools exposed:
| MCP tool | Role |
|---|---|
get_site_briefing |
Site history briefing (read) |
search_team_memory |
Answer from visits only (read) |
log_visit |
Store a debrief (write) |
Supports classic SSE (GET /mcp + POST /messages) and Streamable HTTP (POST /mcp).
| Route | Purpose |
|---|---|
POST /tools/site-briefing |
Beat 1 — spoken site briefing |
POST /tools/log-debrief |
Beat 2 — structure + store debrief |
POST /tools/ask-team-memory |
Beat 3 — answer from shared memory |
GET /feed |
Live Team Memory JSON for the UI |
GET /config |
{ agentId } for the widget |
GET /mcp / POST /messages |
Sauna MCP (SSE) |
POST /mcp |
Sauna MCP (Streamable HTTP) |
GET / |
Demo UI |
GET /about.html |
About page |
All tool endpoints return { "result": "<string for the agent to speak>" }.
├── server.js # Express routes + static
├── store.js # All storage (SQLite; optional Sauna write-through)
├── tools.js # Shared handlers (webhooks + MCP)
├── mcp.js # MCP SSE + Streamable HTTP
├── claude.js # Briefing + debrief extraction
├── db.js / seed.js # Schema + demo seed
├── create-agent.js # ElevenLabs agent + tools bootstrap
├── public/
│ ├── index.html # Voice demo + Team Memory feed
│ └── about.html # Pitch / product page
└── docs/screenshots/ # README images
- Market: deskless workforce; field service management ~$5B+, double-digit growth
- Buyers: mechanical / HVAC / electrical contractors, 20–200 techs
- Price: ~$60–100 / tech / month
- ROI: one avoided repeat truck roll per tech per month
- Moat: every debrief compounds shared memory — switching cost grows daily
- Distribution: built as a Sauna surface → connectors + Spaces for free
MIT — hackathon build. Ship it, fork it, put it on a rooftop.


