

Intercom
A silicon assistant.
- Size
- 101.3 × 39.9 mm
- Copper layers
- 2
- Thickness
- 1.6 mm
- Parts
- 42
- Nets
- 53
- Pads
- 184
- Tracks, vias
- 224, 43
- Pours
- 2
- Routed
- Yes
- KiCad
- KiCad 10.0 (file 20260206)
- Created
- 12 Aug 2026
- Updated
- 7 Nov 2026
Overview
Intercom is an open-source printed circuit board by tylerreckart, from the tylerreckart/arthur repository on GitHub. It is a 2-layer board of 101.3 × 39.9 mm with 42 parts on 53 nets, routed with 224 tracks and 43 vias.
It is built around the TPS61088RHL, CC0805KRX7R9BB104 and CC0805KRX7R9BB221, with the CL31A226KAHNNNE, CL21A106KAYNNNE and CL21B105KBFNNNE among its other parts. Its parts include 16 capacitors, 9 resistors, 2 ICs, 2 switches and 1 diode. It belongs with the ESP32 and AVR (ATmega, ATtiny) boards of this library.
Main components
11TPS61088RHL
UncategorisedTexas InstrumentsCC0805KRX7R9BB104
0805100nF 50V X7R ±10% 0805 Multilayer Ceramic Capacitors MLCC - SMD/SMT ROHSYAGEOMultilayer Ceramic Capacitors MLCC - SMD/SMTCC0805KRX7R9BB221
0805220pF 50V X7R ±10% 0805 Multilayer Ceramic Capacitors MLCC - SMD/SMT ROHSYAGEOMultilayer Ceramic Capacitors MLCC - SMD/SMTCL31A226KAHNNNE
120622uF 25V X5R ±10% 1206 Multilayer Ceramic Capacitors MLCC - SMD/SMT ROHSSamsung Electro-MechanicsMultilayer Ceramic Capacitors MLCC - SMD/SMTCL21A106KAYNNNE
080510uF 25V X5R ±10% 0805 Multilayer Ceramic Capacitors MLCC - SMD/SMT ROHSSamsung Electro-MechanicsMultilayer Ceramic Capacitors MLCC - SMD/SMTCL21B105KBFNNNE
08051uF 50V X7R ±10% 0805 Multilayer Ceramic Capacitors MLCC - SMD/SMT ROHSSamsung Electro-MechanicsMultilayer Ceramic Capacitors MLCC - SMD/SMTMPZ2012S601AT000
0805-55℃~+125℃ 1 100mΩ 2A 600Ω@100MHz ±25% 0805 Ferrite Beads ROHSTDKFerrite Beads0805B472K500NT
08054.7nF 50V X7R ±10% 0805 Multilayer Ceramic Capacitors MLCC - SMD/SMT ROHSGuangdong Fenghua Advanced Tech (FH)Multilayer Ceramic Capacitors MLCC - SMD/SMTCL21B473KBCNNNC
080547nF 50V X7R ±10% 0805 Multilayer Ceramic Capacitors MLCC - SMD/SMT ROHSSamsung Electro-MechanicsMultilayer Ceramic Capacitors MLCC - SMD/SMTCL21C470JBANNNC
080547pF 50V C0G ±5% 0805 Multilayer Ceramic Capacitors MLCC - SMD/SMT ROHSSamsung Electro-MechanicsMultilayer Ceramic Capacitors MLCC - SMD/SMTICS-43434
LGA-6(3.5x2.7)-26dB -40℃~+85℃ 0.98mm 1.65V~3.63V 2.65mm 3.5mm 550uA 64dB I2S Omnidirectional Omnidirectional pickup LGA-6(3.5x2.7) MEMS Microphones ROHSTDK InvenSenseMEMS Microphones
README
README.mdArthur
Arthur is my personal silicon assistant. Local-first and on the desktop natively in MacOS and through an experimental hardware device that share the same conversational memory.
This repository is the voice layer: capture, speech, devices, and the spoken reply. The spoken-agent definition is config/arthur.agent.json.
STT and TTS run on the machine that hosts the Intercom daemon. whisper.cpp transcribes, Kokoro speaks, and Arbiter handles reasoning.
Components
Intercom daemon — HTTP on :8090 (POST /v1/utterance, health, cancel) and a WebSocket hub on :8093 (/v1/stream). It owns STT, TTS, the turn pipeline, device sessions, optional Home Assistant fast-path, and speak-back from Arbiter’s notification stream.
Mac desk app (macos/Arthur) — a native SwiftUI window plus a menu-bar droplet. Click the droplet, hold it, or use the global shortcut to talk. The app keeps the full conversation, and uses the same WebSocket, device_token, and device id for shared memory.
Hardware device (firmware/, hardware/) — a thin audio endpoint. Firmware for an ESP32-S3 (Arduino Nano ESP32 or a board with the same pin map) plus I2S mic (INMP441) and amp (MAX98357A) lives in firmware/nano-esp32/intercom-endpoint.
Weather (home via Home Assistant, or any city via Open-Meteo), news (Google News RSS / configured feeds), and markets (Yahoo public quotes) each speak a short line and emit a versioned {type:surface} card on the desk WebSocket. Voice-only devices ignore surface. See docs/api.md.
Build
Daemon needs C++20, CMake 3.20+, SQLite3, OpenSSL, and Threads. It fetches cpp-httplib and nlohmann/json.
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build -jMac app (Apple Silicon, macOS 26+). Open macos/Arthur/Arthur.xcodeproj, or:
macos/Arthur/build.sh
open macos/Arthur/dist/Arthur.appSpeech tools are not vendored. Install them separately and point intercom.json at the binaries and models:
- whisper.cpp —
whisper-cli,whisper-server, andggml-base.en.bin - Kokoro —
kokoro-ttsplus the ONNX model and voices bundle. Intercom startsscripts/kokoro_server.pyfrom that venv unless you already have a server running.
Configure and run
Run Intercom beside arbiter --api on the same host.
cp config/intercom.example.json intercom.json
# also keep config/arthur.agent.json where agent_def can find it
# (same directory as intercom.json, or set agent_def to config/arthur.agent.json)A local intercom.json is gitignored. Set at least:
arbiter_token— Arbiteratr_…token (arbiter_base_urldefaults tohttp://127.0.0.1:8080)device_token— bearer the wall button and Mac app send (not the Arbiter token)whisper.binary/whisper.modelandkokoro.binary/kokoro.model/kokoro.voices
Then:
./build/intercom --config intercom.jsonDefault ports, all on listen_host (example config uses 0.0.0.0):
| Port | Role |
|---|---|
| 8090 | HTTP: health, utterance, cancel |
| 8093 | WebSocket duplex (set ws_listen_port to 0 to disable) |
| 8092 | Warm whisper-server (spawned unless whisper.server_url is set) |
| 8091 | Warm Kokoro (scripts/kokoro_server.py, same for kokoro.server_url) |
GET /health is ready when Whisper and Kokoro are up; Arbiter may still be down. Set whisper.use_server / kokoro.use_server to false to force the one-shot CLI path.
Optional home block: when ha_base_url and ha_token are set, hallway phrases for lights, volume, weather at home, timers, and the next alarm skip Arbiter. Optional news and markets blocks configure RSS feeds and the quote host; both work without API keys (see config/intercom.example.json).
Firmware. Copy Wi-Fi and token into firmware/nano-esp32/intercom-endpoint/secrets.h (gitignored) or edit config.h. INTERCOM_HOST must be the LAN address of the Intercom machine — not 127.0.0.1. WebSocket is on INTERCOM_WS_PORT (8093); set it to 0 for HTTP-only. Flash the sketch in firmware/nano-esp32/intercom-endpoint. Contract: docs/device.md.
Mac. Settings load host, ports, and device_token from intercom.json. Choose the hallway device under Shared memory so this Mac and the wall button keep one conversation. Default global talk shortcut is ⌥Space (change it under Push to talk). Microphone permission is required to speak. Quiet text mode (Arthur menu or Settings → Typing) stops Space from starting push-to-talk so the composer is safe to type in; the global shortcut and menu-bar droplet still talk.
Docs
docs/api.md— HTTP and WebSocket contract, Arbiter mapping, speak-back, Kokorodocs/device.md— PCM format, PTT flow, ESP32 endpoint, colocationconfig/intercom.example.json— daemon configconfig/arthur.agent.json— spoken-agent definition
License
Apache-2.0
Parts
42| Qty | Value | Footprint | References |
|---|---|---|---|
| 4 | MountingHole_Pad | MountingHole_2.2mm_M2_Pad | H1, H2, H3, H4 |
| 3 | 0.1uF | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C7, C22, C31 |
| 3 | 220pF | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C3, C5, C6 |
| 3 | 22uF | Capacitor_SMD:C_1206_3216Metric_Pad1.33x1.80mm_HandSolder | C27, C28, C29 |
| 2 | 10k | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R2, R24 |
| 2 | 10uF | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C8, C30 |
| 2 | 1uF | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C2, C23 |
| 2 | 200k | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R20, R21 |
| 2 | 600Ω@100MHz | Inductor_SMD:L_0805_2012Metric_Pad1.05x1.20mm_HandSolder | FB1, FB2 |
| 1 | 1.2uH | Inductor_SMD:L_Coilcraft_XAL5030-XXX | L2 |
| 1 | 180k | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R22 |
| 1 | 1M | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R4 |
| 1 | 1S LiPo | JST_PH_S2B-PH-K_1x02_P2.00mm_Horizontal | BT2 |
| 1 | 1k | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R1 |
| 1 | 4.7nF | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C25 |
| 1 | 47nF | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C24 |
| 1 | 47pF | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C26 |
| 1 | 56k | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R23 |
| 1 | 68 | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R3 |
| 1 | A50K | Potentiometer_Bourns_PTV09A-1_Single_Vertical | RV1 |
| 1 | Arduino_Nano_ESP32 | Module:Arduino_Nano | A1 |
| 1 | Conn_02x02_Odd_Even | JST_PH_S2B-PH-K_1x02_P2.00mm_Horizontal | J1 |
| 1 | ICS-43434 | Sensor_Audio:InvenSense_ICS-43434-6_3.5x2.65mm | MK1 |
| 1 | LED red | LED_D5.0mm | D1 |
| 1 | MAX98357A | Package_DFN_QFN:TQFN-16-1EP_3x3mm_P0.5mm_EP1.23x1.23mm_ThermalVias | U1 |
| 1 | POWER | SW_Slide_SPDT_Straight_CK_OS102011MS2Q | SW2 |
| 1 | SW_Push | SW_PUSH_6mm | SW1 |
| 1 | TPS61088 | Package_DFN_QFN:Texas_VQFN-RHL-20_ThermalVias | U2 |
Questions
How big is the Intercom PCB?
It measures 101.3 × 39.9 mm and has 2 copper layers, 1.6 mm thick.
What parts does the Intercom use?
42 parts, built around the TPS61088RHL, CC0805KRX7R9BB104, CC0805KRX7R9BB221 and CL31A226KAHNNNE. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
Where can I download the Intercom KiCad files?
From the tylerreckart/arthur repository on GitHub, at the commit this page was made from: the board is hardware/rev-a/intercom.kicad_pcb and its schematic hardware/rev-a/intercom.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the Intercom design in my own project?
Its repository states no licence, so its author keeps all rights: ask tylerreckart before reusing the design.
More from tylerreckart/arthur
1- 2 layers64.3 × 24.5 mm

Similar boards
- 4 layers52 × 74 mm

FRC Sensor CAN
barkinvar/sugerCANe
A compact interface for three NPN, PNP or logic sensors on an FRC robot. Each port has a removable 5 V / 12 V power jumper; input type is configured in software.
144 parts1 - 4 layers243.8 × 171.5 mm

- 4 layers243.8 × 245.5 mm

Neotron Common Hardware
Neotron-Compute/Neotron-Common-Hardware
Contains KiCad footprints and symbols shared across multiple Neotron projects.
287 parts4CC-BY-SA-4.0 - 4 layers243.8 × 171.5 mm

- 4 layers132.6 × 100 mm

- 4 layers140 × 100 mm

Rcm dish controller
jrseti/Dish
Simple controller with toggle switches to move the dish motors
314 partsCC0-1.0 - 2 layers80 × 99.8 mm

- 4 layers130 × 110 mm
