Apache 2.0 — open source

# loopat

loop at context, distill into knowledge
Loop = context + AI + workdir

A self-hosted AI workspace built around context management — works solo, scales to teams. What makes loopat different is the context architecture: chat, code, memory, and knowledge interlock so context doesn't get lost across sessions or teammates.

Get Started
View on GitHub
Features

## End-to-end context management
for humans and AI

When humans collaborate with AI, three things only humans can bring: drive, attention, and entropy reduction. loopat builds these in as first-class concepts — Loop, Focus, and Context — with Chat coordinating the team on the sync axis.

🧶

### Reproducible Loops

Every loop runs in its own sandbox with a versioned toolchain and pinned credential vault. Same state tomorrow, different machine.

💬

### Collaborative Chat

WebSocket-powered real-time chat with Claude. Multiple browser tabs can share the same loop session simultaneously.

📋

### Kanban Boards

Built-in Kanban with drag-and-drop, real-time sync across subscribers. Manage tasks alongside your AI agent.

💻

### Web Terminal

Full PTY terminal inside the sandbox. Shared across loop subscribers — everyone sees the same bash session.

📁

### File Tree & Editor

Browse and edit files inside the sandbox from the web UI. Git integration with commit and log views.

🧠

### Persistent Memory

Two-tier memory system — personal (`personal/memory`) and team-shared (`context/notes/memory`). Auto-recalled across sessions so context is never lost.

Architecture

## One loop, one sandbox

Every loop bundles its own context, AI agent, and working directory inside a Linux mount namespace. Portable, reproducible, and secure by default.

📚

#### Context

Knowledge + Notes + Memory

+
🤖

#### AI Agent

Claude CLI in bwrap

+
📂

#### Workdir

Git worktree per loop

=
🧶

#### Sandboxed Loop

Isolated & reproducible

1

#### URL Routing

Hono router binds requests to loop IDs via closures

2

#### Map Partitioning

Per-loop session maps prevent cross-loop broadcast

3

#### Process Isolation

Each loop spawns independent Claude CLI subprocess

4

#### Mount Namespace

Kernel-enforced filesystem isolation via bubblewrap

How It Compares

## Works solo, scales to teams

Same workspace whether you're alone or onboarding teammates. Solo, it's a personal AI workspace; with a team, shared knowledge and notes repos sync across members.

| Claude Code | Cursor | opencode | Codex | loopat
--- | --- | --- | --- | --- | ---
Form factor | CLI | IDE | TUI | Web (hosted) | Web (self-hosted)
License | proprietary | proprietary | MIT | proprietary | Apache 2.0
Team IM integration | manual paste | manual paste | manual paste | manual paste | built-in
Shared team knowledge | individual config | individual config | individual config | individual config | git-synced
Per-session sandbox | process-level | process-level | process-level | managed | bwrap + Docker
Credential isolation | shared env | shared sub | shared env | acct-managed | per-loop vault
Data location | local files | cloud | local files | OpenAI servers | git repos you control
Agent engine | Anthropic | multi-model | pluggable | OpenAI | Claude Agent SDK

Design Principles

## Filesystem-first, portable, transparent

No database. Everything is a file. rsync your workspace to another machine and pick up exactly where you left off.

01

### Sandbox = Directory

Sandbox permissions arenʼt hidden in config files. Theyʼre derived from the physical structure of `loops/<id>/` — run `ls -laR` to see the full access scope.

02

### Machine-Independent

rsync `$LOOPAT_HOME` to any machine, restart the server, and everything works — chat history, sessions, memory, sandbox views. All paths are virtual.

03

### Self-hosted, data you own

All artifacts live in plain git repos you fully control; vault secrets are git-crypt encrypted. BYO API key — nothing leaves your machine except the model API call itself.

Quick Start

## Up and running in seconds

One command to start. Works on any Linux machine. macOS via Docker.

# 1. Install system dependencies sudo apt install bubblewrap openssh-client mise # 2. Install Bun curl -fsSL https://bun.sh/install | bash # 3. Clone & start git clone git@github.com:simpx/loopat.git cd loopat bun run dev # Open http://localhost:7787