Projects / a7t.chat github.com/a7t-ai/chat

  • [assistant]
  • [archivist]

a7t.chat

The AI chat for everyone in your house. Self-hosted.

I run local models at home. a7t.chat is the chat that puts them in front of the people I live with. Deploy it on one machine, reach it over your own network (Tailscale works out of the box), and everyone in your house gets a beautiful AI chat on your models, with no cloud account in sight.

src/auth/webauthn/routes.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
// The first passkey account created on the private network is the owner.
// Everyone after, and anyone arriving via the public edge, is a plain account.
function createPasskeyAccount(now: Date, viaEdge: boolean): User {
  return db.transaction((tx) => {
    const ownerExists = tx.select({ id: users.id }).from(users)
      .where(eq(users.role, "admin")).get();
    const role = !ownerExists && !viaEdge ? "admin" : "account";
    return tx.insert(users)
      .values({ login: `acct_${randomUUID()}`, role, accessGrantedAt: now })
      .returning().get();
  });
}
// the whole household model, decided atomically at sign-up
a7t.chat

For a while I was the only one using those models, through a terminal. a7t.chat is what changed that: a chat my whole household reaches over our own network, running on the machine already humming in the corner. My wife has her own account. So can your family, your friends, and the guest on your couch.

What it is

a7t.chat is a self-hosted AI chat. You run it on one machine on your network, and everyone in your house opens it in a browser and talks to the models you already run locally. No cloud, no per-seat accounts, nothing leaving your walls. Each person signs in with a passkey and keeps their own conversations. It is MIT licensed, and you host it yourself.

Not a coding tool

Let me be clear about who this is not for. If you write software, you already have opencode, pi, Claude Code, and a dozen agentic CLIs. Keep them. a7t.chat is for everyone else in your life: the partner planning a trip, the kid doing homework, the friend who wants a recipe, the guest who asks a question over dinner. It is the everyday chat for the people around you, running on the models you own.

How your house uses it

Deploy it once, on a Mac or a Linux box on your network. Expose it however you like. Tailscale is the path I use, so a7t.chat rides your tailnet and only the people you invite can reach it, from any of their devices, with no port forwarding and no VPN to wrangle. Each person creates a passkey account with Face ID, Touch ID, or a security key. The first person to sign up on your network becomes the owner, and everyone after is a normal account. They find each other in a simple directory, share a conversation, and you are quietly running a private little AI service for your household.

Features

Here are the things my house actually reaches for. Each one has to render beautifully and work for someone who has never heard the word inference.

Find your household, share a chat

The a7t.chat share panel: inviting a household member by their handle, with a role dropdown set to view, prompt, or edit, and the people already on the conversation listed below.
Invite by handle, then pick a role: view, prompt, or edit.

Invite the people in your house by their handle, and the chat lands in their own app with the access you chose. Everyone can be on the same conversation at once, from their own devices, with no shared login.

Research, real answers with sources

A straight answer, with the sources it pulled from.

Ask anything and get an answer with sources. It searches the web, cites what it used, and shows its work, instead of only what the model happened to remember.

Recipes and timers

a7t.chat turning a weeknight margherita request into a checkable shopping list, with proof, bake, and rest timers built into the steps.
Dinner becomes a checkable list with timers in the steps.

Ask for dinner and get a checkable shopping list plus built-in countdowns. It works on the shared page too, so whoever is cooking can tick things off from their phone.

On every phone in the house

a7t.chat on a phone: a Lisbon day plan reply with tappable place chips. a7t.chat on a phone: the map panel rendered full width with numbered place pins. a7t.chat on a phone: a recipe as a checkable shopping list.
The full experience on a phone: a live build, the reply, the full-width map, and the shopping list.

The full experience on a phone, not a cramped fallback. The map goes full-width and the composer stays out of the way.

Themes

a7t.chat in a dark charcoal theme, showing a Lisbon day-plan conversation. a7t.chat in a light white theme, showing the same Lisbon day-plan conversation.
The same chat, two themes: charcoal and white, dark and light.
a7t.chat's theme picker: a grid of theme swatches to choose from in settings.
Pick from the full set in settings.

Everyone sets their own look. A range of themes, light and dark, so it fits the person, not just the screen.

Favorites

a7t.chat's sidebar with a Favorites group pinned above the recent chats, holding the starred conversations someone keeps returning to.
A star pins a chat to the top of the sidebar.

Star the chats you keep coming back to. They rise into a Favorites group above your recents, so the ones that matter are always a click away.

Thinking mode

The reasoning streams in, then folds away into a disclosure.

Flip on Thinking and watch the model reason before it answers. It works with any reasoning model you run, and the reasoning tucks into a disclosure you can open or ignore.

Branch a chat

a7t.chat branching a conversation from a chosen message into a fresh chat that carries the earlier context, with the original conversation left in place.
Branch from any point; the original stays untouched.

Take a conversation in a new direction without losing the old one. Branch from any point and a fresh chat picks up with that context, leaving the original untouched.

Recap

a7t.chat opening an older conversation with a recap: a short summary of what you were working on, where it left off, and a suggested next step to resume into.
Reopen an old thread and it summarizes where you left off.

Come back to a chat after a few days and it catches you up: what you were working on, where it ended, and a next step you can resume into.

Bring your own key

a7t.chat's settings screen for adding a frontier API key, with fields for an OpenAI or Anthropic key. a7t.chat's model picker showing frontier models appearing alongside the local ones after a key is added.
Drop in a frontier key and those models show up in the picker.

Local models by default, but bring a frontier key too. Drop in an OpenAI or Anthropic key and those models appear in the picker, routed per conversation on your key. Good for the people in your house who want the big models without running anything locally.

Share it live

Here is the part worth showing. A conversation is a link you can share, and the other person watches it build in real time, with no login and nothing to install. Send a plan to whoever needs it and they follow along as it fills in, then act on it from their own phone. Collaboration is built into the chat, not bolted on.

Private by default

Your models. Your machine. Your network. Conversations live in a local SQLite file on the box you control. Sign-in is passkeys, so there are no passwords to leak. Point it at the public internet and it stays a private instance: the front door is walled, and only your own network can create accounts. Never point it at the internet at all, and it is simply yours.

Built in the open

a7t.chat is largely built and maintained by Three-Body Agent, the autonomous dev pipeline I run on GitHub Actions. It reads the roadmap, opens pull requests, reviews them, and ships the green ones. That is a story for its own page, but it is why a solo project moves like a team, and all of it is in the open.

Self-host it

Repo: https://github.com/a7t-ai/chat. The README takes you from a clone to a running instance on your network, pointed at whatever local model router you already run. MIT licensed.

What I’d do for you

If you want a private AI for your household and would rather not assemble it yourself, I can stand one up for you: your hardware, your models, your family on it in an afternoon.