Alto

Shared project environments where software teams work with coding agents together.

Event
HackGT 13 · Sep 2026
Team of 3
Nathan Bai, Neal Kotval, Aarush Mathad
Stack
Next.js, Electron, Better Auth, SQLite, Docker, Terraform, AWS

Problem

Sharing one agent mixes instructions; separate agents split context.

Approach

One conversation and Git worktree per agent, on a shared environment.

My part

Org auth, environment requests, and the web-to-desktop Codex experience.

Outcome

Full path demoed: web → desktop → sign-in → Codex chat.

Alto desktop app: a Codex conversation reporting the GPU of a shared AWS EC2 environment
Fig. 01 · A Codex conversation on a shared project environment.

Context

One shared session

Instructions get mixed. Ownership is unclear.

Separate sessions

Context splits. Work duplicates. Handoffs are hard.

Alto

A conversation and worktree per agent, with explicit handoffs.

Boundary: teammates share machine resources and a Unix account. Worktrees prevent edit conflicts, not access to each other’s files.

Team & my role

Me

Nathan
  • Organization auth (Better Auth)
  • Environment requests and policy checks
  • Codex session transport and persistent chats
  • Environment-to-chat handoff, browser login
  • Reconnection after interruptions
  • Much of the web and desktop UI

Neal Kotval

  • Environment workers
  • SSH authorization and revocation
  • Reconciliation and cleanup

Aarush Mathad

  • Initial Electron shell
  • Task/chat integration, deep links
  • Backboard memory

Shared AWS EC2 provisioning with Terraform · Docker infrastructure · web and desktop integration

Product

Alto web app: a ready environment card with its access decision, SSH command, and Open in desktop button
Fig. 02 · Environment to conversation, in the web app
  1. 1Ready once the worker verifies SSH access
  2. 2Access decided by project membership and role
  3. 3Hand off to a desktop Codex chat
Alto sign-in screen: continue to your organizations and projects
Fig. 03 · Sign-in to organizations and projects
Alto desktop app: saved Codex chats grouped by teammate on one shared environment
Fig. 04 · Persistent Codex chats, grouped by teammate

Architecture & trade-offs

01 · Shared

Client

Web or Electron calls the API

02 · Mine

Authorization

Org and project access checks

03 · Mine

Environment job

Policy checks, persisted job

04 · Neal

Worker

Allocates, verifies SSH and workspace

05 · Mine

Session

Codex and terminal

06 · Mine

Return path

Events and history to clients

Beside 05 · Aarush

Optional Backboard memory

Beside 04 · Neal

Reconciliation, expiry, cleanup

Outside · Shared

Terraform configures AWS

Fig. 05 · Request path, 01 → 06. Blue steps are my work.

Known limits No file isolation between teammates · Revoking a key doesn’t end an open SSH session · Cleanup runs on deadlines, not idle time

Key trade-offs I made

Self-hosted auth on SQLite

Mine

Benefit: Fast setup; reproducible locally

Trade-off: Limited scaling; JSON coordination records live outside the database

Membership by invitation

Mine

Benefit: Verified email + accepted invite + project check; simple to administer

Trade-off: Doesn’t independently prove employment

Reconnection separate from cleanup

Sessions · mineResources · Neal

Benefit: Workers reconcile resources on startup and every poll, even after a crash, and confirm EC2 and EBS are gone

Trade-off: Shutdown is asynchronous; it recovers resources, not lost work

Lessons

Ship a narrower first slice

One provider, verified readiness, login, one agent turn, confirmed cleanup — then expand.

Keep evidence next to the code

Record what was tested, and at which revision, so planned, built, and demoed stay distinct.