Engineering standup
You didn't go. Hal listened, took notes, emailed you a 90-second summary at 09:13. Your team didn't notice you weren't there.
Hal autonomously joins your Google Meet, Zoom, and Microsoft Teams calls on your behalf — listens, takes notes, speaks when you want it to, and follows up after. Your tokens, your transcripts, your infra. Open source.
Some meetings need you. Some need a summary. Some need someone to speak on your behalf. Some shouldn't happen at all. Hal sorts the difference, on a per-meeting policy you set.
You didn't go. Hal listened, took notes, emailed you a 90-second summary at 09:13. Your team didn't notice you weren't there.
Hal makes itself part of your team
Hal indexes the next 7 days of meetings. You set policies for each one.
Hal joins as a disclosed participant. Listens, transcribes, emails you summaries.
Enable chat-on-behalf in low-stakes meetings. Hal answers logistics in the chat for you.
Toggle voice-on-behalf for meetings you trust Hal with. Always disclosed. Kill switch always on.
"We don't think every meeting deserves a human. We think most deserve a summary, a few deserve a delegate, and almost none deserve another hour of your week. Hal is the agent that sorts the difference — on the record, with your tokens, on your infra."
Hal is pre-alpha — none of these are customers yet. They're paraphrased from conversations with people on the waitlist about why they want Hal in their week. Click a name on the left, or wait six seconds.
"Half my calendar is meetings I shouldn't be in. The other half is meetings I shouldn't be running. Hal handles the first half and I get to think about the second."
Either you attend, you record, you build, or you delegate. Hal is the last column — and the only one that exists as a self-hostable open-source project.
Hal isn't a transcription tool with a chat. It's an agent with a role, a voice, a kill switch, and an audit log. Built to be trusted in the room.
When you can't attend, Hal joins as a disclosed delegate. Bot-as-delegate, never deepfake.
Speaker-diarized transcripts. Action items, decisions, open questions surfaced automatically.
Pre-brief Hal on goals, talking points, hard nos. Confidence threshold before speaking.
Follow-up emails, CRM updates, calendar holds — all drafted, never auto-sent.
AES-256 envelope encryption, per-user DEK, KMS-wrapped. Your tokens never leave plaintext.
Whisper or Deepgram. Piper or ElevenLabs. Ollama or Claude. Local libsodium or AWS KMS. All swappable.
Dial in mid-meeting and Hal mutes itself. Every line Hal said is in the audit log.
Fork it. Run it. Contribute back. Self-host on a VPS or wait for the hosted plan.
Native SDKs where they exist — Zoom Meeting SDK, Microsoft Teams Bot Framework. A hardened headless Chromium worker for Google Meet (because Meet has no production bot API). Whatever the platform, Hal joins like a participant, on a real connection, with real audio.
Bot-as-delegate. Never deepfake. Hal joins as "Hal · AI for <your name>" and announces itself on entry. Voice cloning is opt-in, requires a recorded consent step, and every generated clip is watermarked and audit-logged. You can always disable speaking entirely.
Connect Google Calendar or Microsoft 365 once. For each meeting, set policy — auto-join, ask first, or ignore. Hal subscribes to your calendar via push, so when a 10:30 sync becomes a 10:45 sync, Hal updates. Recurring meetings inherit your policy.
Transcript. Summary. Action items. Drafted follow-up email (for your review, not auto-sent). Optional CRM updates, Notion handoffs, calendar holds for promised next steps. Hal is opinionated about not pretending decisions were made when they weren't.
Hal uses standard envelope encryption: a master key in your KMS wraps a per-user data encryption key, which encrypts every OAuth token, transcript, and audio file. Lose the database — lose nothing.
One docker compose up on a VPS and you have your own private meeting agent. No phone-home, no required SaaS dependency, no telemetry. The same codebase will eventually power the managed hosted plan — but you're not required to wait.
$ git clone https://github.com/hallelx2/hal-meetings $ cd hal-meetings && cp .env.example .env $ docker compose up -d → web listening on http://localhost:3000 → agent bot worker ready → vault transit engine initialized → db postgres up · migrations applied first run open http://localhost:3000/setup # OAuth your calendar. OAuth Meet/Zoom/Teams. # Drop a meeting URL. Watch Hal join.
Hal sequences by the hardest engineering problem first — joining meetings reliably — not by the most demoable feature. ETAs are best-effort estimates from a one-person team. They will slip. The roadmap will not.
Headless Chromium bot joins Google Meet as a disclosed participant. Transcribes. Emails you a summary. Manually triggered with a URL.
Google Calendar + Microsoft 365. Per-meeting policy: auto, ask, ignore. Hal joins on time, every time.
Hal posts in the meeting chat for you — answers logistics, drops links, surfaces docs. Controlled action surface before audio.
Voice mode, opt-in. Pre-meeting brief. Confidence threshold before speaking. Kill switch. Audit log of every utterance.
Native Zoom Meeting SDK worker for higher-quality audio and stable join behavior. Marketplace submission.
Microsoft Teams Bot Framework integration. Calling and meeting bot. Partner Center submission.
CRM updates (HubSpot, Salesforce, Attio). Notion / Linear handoffs. Calendar holds. All drafted, never auto-sent.
We're rolling out access in small batches. Drop your email and we'll send a setup link when Hal can join a meeting in your stack.