Dock is a phone agent that tracks truck waiting time at the loading dock, so drivers, shippers, receivers and brokers all see the same clock.
A truck arrives for its appointment, but the receiver isn’t ready to unload. After the free time runs out (often two hours), the carrier can bill a detention charge. Usually the shipper only finds out when the invoice shows up, and then everyone argues over whose times are right.
Dock logs the driver’s check-in and starts the free-time clock. Anyone on the load can call and hear the same facts: when the clock started, how much free time is left, what the charge would be so far, and what would stop it. The broker gets a timestamped record of each event, so the charge isn’t a surprise.
Requires Python 3.11+, uv, tmux and a Guava account for the phone line.
uv sync
guava login
./scripts/demo-up.sh
This starts the phone agent and the desk at http://127.0.0.1:8741. Without guava login, only the desk works. Run the tests with uv run pytest.
Each part is a small package in packages/. The Python packages share one append-only event log.
dock-voice: the phone agent (built on Guava)dock-events: the event log and its formatdock-clock: the free-time clock and charge estimatedock-intake: turns driver calls and texts into eventsdock-notify: writes the heads-up messagesdock-call: plans outbound callsdock-track: handles “where is my load?” requestsdock-proof: builds the timestamped record for the brokerdock-web: the live deskdock-landing: the website (static HTML)Details are in docs/ARCHITECTURE.md. If you want to contribute, start with CONTRIBUTING.md and AGENTS.md.
All names, phone numbers and loads in this repo are made up.
Built at the Guava voice-agent hackathon on October 17, 2026.