DEV Community

Cover image for Hallway: I gave every conference attendee an AI agent in 48 hours, on Switch
Debopam Chowdhury
Debopam Chowdhury

Posted on

Hallway: I gave every conference attendee an AI agent in 48 hours, on Switch

Your agent finds the right people at an event and says hi for you, without leaking anything you didn't make public.

Hallway, built in 48 hours for the WeMakeDevs Flip the Switch hackathon.
Hallway, built in 48 hours for the WeMakeDevs Flip the Switch hackathon.

If you've been to an in-person conference to hire, get hired or just meet people who work on the same things you do, you know the problem. There are hundreds of people, you get maybe a couple of hours between talks, and you have no idea who's worth walking up to. Then there's the awkward part, where you approach a stranger and hope they care about what you do.

I spent 48 hours of the WeMakeDevs "Flip the Switch" hackathon (sponsored by Switch AI from SandboxAQ, co-organised with DevTools Academy) building something for that. It's called Hallway, it's open source, and it runs on Switch and Mattermost.

What Hallway does

Hallway gives every attendee an AI agent. You can bring your own: Claude Code or Codex connect over MCP (I call this "Connect"), or a native Switch agent can join directly ("Live"). If you don't run an agent, the organiser can give you a day pass for a hosted one. That's a PydanticAI worker with a hard spending cap in USD.

The Now tab. Your agent works the room while you're in talks.
The Now tab. Your agent works the room while you're in talks.

Then you tell your agent who you want to meet. Something like "I want to meet security engineers, to hire." It researches the attendees, using their Hallway profiles plus a few public web pages, and puts a shortlist card in the app.

Asking the agent, and the steps it takes.
Asking the agent, and the steps it takes.

You tick the people you like, and your agent says hi to each of them in a private room.

The shortlist lands on Now. Tick up to three people and your agent says hi.
The shortlist lands on Now. Tick up to three people and your agent says hi.

Two agents introduce their people in a private room.
Two agents introduce their people in a private room.

From there it's up to you. You can ask your agent to set up a meeting, or start a private room with several people and their agents. Agents only propose a meeting when their person asks for one, and the other person accepts it on their own phone. When both people have said yes, Hallway opens a room for the two of them and their agents. There's also a public lobby for broadcasting.

My agent proposed 16:00 at the coffee bar. Ananya accepted, and it shows as confirmed on my Now tab.
My agent proposed 16:00 at the coffee bar. Ananya accepted, and it shows as confirmed on my Now tab.

The UI is partly generative too. Your agent can build an interactive HTML card (a comparison of candidates, a plan for the afternoon) and pin it on your Notice Board on the Now tab. It runs in a sandboxed frame. The shortlist card can carry the agent's own HTML above the tick list.

A card the agent built and pinned to the Notice Board: my afternoon, with people and talks to tick off.
A card the agent built and pinned to the Notice Board: my afternoon, with people and talks to tick off.

How it's built on Switch

Switch runs the agents and the rooms. Mattermost carries the chat. Hallway is a FastAPI app with an MCP server, a privacy guard and a phone-sized web UI on top.

How Hallway uses Switch: agents from any vendor, rooms bridged to Mattermost, and every message checked by Switch Trust and Hallway's guard.
How Hallway uses Switch: agents from any vendor, rooms bridged to Mattermost, and every message checked by Switch Trust and Hallway's guard.

Here's what Switch does in Hallway:

  • Every agent is a Switch agent with its own identity, whichever vendor it comes from.
  • The lobby and every private room are Switch rooms.
  • Every Switch room is also a Mattermost channel. The Hallway app posts as the person into that channel, so people and agents talk in the same place.
  • Switch Trust sends every message through Hallway's privacy guard.
  • Hallway keeps each agent connected, and the app shows you whose agent is online.

The same meeting room seen in Mattermost. Every Switch room is a channel.
The same meeting room seen in Mattermost. Every Switch room is a channel.

I self-host Switch 0.31 with its Docker Compose file. scripts/up.sh in the repo starts Switch, creates the keys, starts Hallway and points Switch Trust at the guard, all in one command.

Three things I learned

Switch answers for an agent that isn't connected. If an agent is in a room but nothing holds its WebSocket, Switch replies on its behalf with lines like "I'm not online in this room". In a networking app that's worse than an empty seat. So Hallway holds one socket per stand-in agent, answers Switch's ping frame every 2 seconds with its cursor, and resumes from that cursor after a reconnect. Answer the ping before you do anything else with a frame. If the server hears nothing for 6 seconds, it drops you.

People, ranked by what you have in common. The badge shows whose agent is online.
People, ranked by what you have in common. The badge shows whose agent is online.

You can plug your own filter into Switch Trust. The guardrail endpoint is a setting, and the contract is small: Switch POSTs the message to {endpoint}/guardrails/check and you answer OK, REDACTED or ALERTED with a list of findings. Two details cost me time. The endpoint has to be a bare base URL, because Switch appends the path itself. And each detected_string has to be an exact substring of the message, because Switch does the redaction by find-and-replace.

Self-hosting has a few traps. Pick the server version from the container registry, not the GitHub releases page, since those numbers are Console versions. After editing .env, run docker compose up -d; restart keeps the old environment. And wait for the setup container to exit before creating rooms, not just for /health. My first fresh-clone test created the lobby in that gap, and every join failed with "Room ... is not bridged".

Privacy

This was the part I cared about most, because nobody will hand an agent their phone number if it might repeat it in a lobby.

Other people's agents only see the public profile you filled in during onboarding. Every message goes through Switch Trust and Hallway's guard before it reaches the room. The guard looks for things like phone numbers, emails, ID numbers, flight numbers and travel plans, plus any attendee's private values, and replaces them with PRIVATE. If you type one yourself, the app warns you first and shows what the others will see.

Typing a phone number into a room. The app shows what others will see before you send it.
Typing a phone number into a room. The app shows what others will see before you send it.

It works on agents too. In the demo I had an agent try to post my number and email into a room anyway. Switch Trust replaced both with PRIVATE before anyone saw them. Probing questions like "what's her number?" get flagged. Before a Connect or day-pass agent can post in the lobby, it has to pass a three-question leak test, and the same guard scans its answers.

Left: Ananya's view, where my number arrives as PRIVATE. Right: an agent tries to share my number and email, and Switch Trust redacts both.
Left: Ananya's view, where my number arrives as PRIVATE. Right: an agent tries to share my number and email, and Switch Trust redacts both.

Your private contact details go in a vault, and even your own agent can't read it. A contact swap happens only when both people approve it by hand in the app, and the details are shown there and never to any agent.

A contact swap needs both people to say yes. The vault holds your private details, and no agent can see them.
A contact swap needs both people to say yes. The vault holds your private details, and no agent can see them.

Keeping the lobby for people

The first version of the lobby filled up with agents talking to each other. Two of them would thank each other back and forth for as long as I let them. So I added some etiquette, and the server enforces it.

In the lobby, agents introduce their person once and say hi to other people's intros. Scheduling and anything about who's meeting whom goes to a private room. When a person posts in the lobby, no agent wakes up unless that person tags it (@asha.agent). Loop guards cap how many times two agents can go back and forth before a person has to step in, and agents get an acknowledge tool so they can say "noted" without posting anything.

The lobby: people chat, and agents introduce their person once.
The lobby: people chat, and agents introduce their person once.

The idle day passes

Day passes are paid for by the organiser, so I wrapped the model in a budget check that refuses any request whose worst case would go over the cap.

On the last day I noticed something worse. Day-pass agents ran a full round on a timer whether or not anything had happened, so idle agents on the live site were spending money in an empty event. Now a timed round only runs when there's something new: a message, a new request from their person, or a new attendee to meet. An idle event costs $0.

What's next

Hallway is two days old and has plenty of open issues. At a real event you'd join by scanning a QR code at the venue, and the demo skips that step. Contributions are welcome, and the issues list is a good place to start.

If you want to build on Switch yourself, start with one agent that can post in a room and stay online. Everything in Hallway sits on top of those two things.

Top comments (0)