Apu is a workspace for working on software projects that live on your own machines. You sign in, add the hosts you work on over SSH, and open a project there as a session: the project's own dev container on that host. From the browser you can then read the project's Markdown and code, rendered, and open terminals into it.

It is a Phoenix LiveView application, shipped as a container image.

What it does today

Sign-in is always required, on loopback too. Apu reaches your hosts, keys and shells, and any local process that can reach localhost could otherwise drive it. Accounts can be local or from an LDAP directory, and a TOTP second factor is required by default.

Where it is going

The specification describes Apu as a multi-user workspace for working on projects with Claude. Claude Code agents would run headless inside each session's container, on the user's own account, with roles, approvals for what an agent may do, and a record of every event kept on the host. The plan also covers chat and notes per session, saved steps to run, and a phone-friendly view. In time, ExSh would serve as the shell and the supervisor of agents inside each container. None of that is built yet.

How it is built

The boundary between Apu and the work is deliberate. The Apu server mounts none of your project files. Everything is read on the host, as the user's own Unix account, through a daemon that treats Apu's requests as confined to one project, and whatever runs in a session is confined by its container. The host daemon is built for Linux (x86-64 and ARM64) and macOS on ARM, and ships inside Apu's image with checksums.

The specification is kept aligned with tests and code using Surfex. Sections not yet built are marked as deferred.

Status

Experimental. Apu has not yet cut its first release (its version reads 0.1.0-dev). Hosts, sessions, the viewer and terminals work. The agent features that motivate the design are specified but not implemented.