laf-office
v0.10.38
Published
Hosted AI development workspace bootstrap with local Codex and Claude execution through LAF Bridge.
Maintainers
Readme
LAF-Office
Hosted project workspace for startup AI agents.
A hosted project workspace where startup teams plan work with agents, keep shared memory, and connect implementation tasks to local Codex or Claude CLI through LAF Bridge.
One shared web workspace. CEO, PM, engineers, AI engineer, and designer — all visible, claiming tasks, updating the wiki, and shipping work through LAF Bridge instead of disappearing behind an API.
▶ 30-second teaser and full walkthrough on GitHub
Get Started
Production users should start in the hosted web app, create a setup code in Settings -> LAF Bridge, and pair the only local execution component:
npx laf-bridge pairPaste the setup code when Bridge prompts for it. Bridge then keeps an outbound connection to the hosted API and runs approved Codex or Claude CLI work locally.
This laf-office npm package is a contributor bootstrap for running the
development web workspace from the CLI, not the hosted production setup path.
Local Developer Bootstrap
Prerequisites: one agent CLI — Claude Code by default, or Codex CLI when you pass --provider codex. tmux is only required for --tui mode.
npx laf-officeThe browser opens automatically and you're in the contributor development workspace.
Prefer a global install?
npm install -g laf-office && laf-officeSupported platforms: macOS and Linux on x64 or arm64. The native binary is lazy-downloaded from GitHub releases on first run and cached under node_modules/laf-office/bin/.
The npm package is a contributor bootstrap for the development web workspace. Hosted deployments use LAF Bridge as the only local execution component: open Settings -> LAF Bridge in the hosted app, create a setup code, and run:
npx laf-bridge pairPaste the setup code when LAF Bridge prompts for it.
Without a connected bridge, the hosted workspace still supports planning, project memory, task creation, and queues; only Bridge execution waits.
Stability: pre-1.0.
mainmoves daily. Pin to a release tag, notmain.
Options
| Flag | What it does |
|------|-------------|
| --tui | Use the tmux TUI instead of the web UI |
| --no-open | Don't auto-open the browser |
| --opus-ceo | Upgrade CEO from Sonnet to Opus |
| --provider <name> | LLM provider override (claude-code, codex) |
| --collab | Start in collaborative mode — all agents see all messages (this is the default) |
| --unsafe | Bypass agent permission checks (local dev only) |
| --web-port <n> | Change the web UI port (default 7891) |
Memory: Notebooks and the Wiki
Every agent gets its own notebook. The team shares a reviewable wiki. When a conclusion in an agent's notebook holds up, it gets promoted to the wiki so the whole workspace benefits.
Internal naming for code spelunkers: notebook = private memory, wiki = shared memory.
Other Commands
laf-office init # First-time setup
laf-office shred # Reset contributor workspace state
laf-office --1o1 # 1:1 with the CEO
laf-office --1o1 pm # 1:1 with a specific agentWhat You Should See
- A browser tab at
localhost:7891with the project workspace - The Projects view with project wiki, task queue, agents, and repo status
- The team visible and ready to claim work
- A composer to send messages and slash commands
If it feels like a hidden agent loop, something is wrong. The work should be visible in projects, tasks, and the project wiki.
Integrations
- Telegram:
/connect→ pick Telegram → paste bot token from @BotFather.
External Actions
Managed CRM, calendar, notification, email-automation, and hosted action integrations are not available in this build yet.
Why LAF-Office
| Feature | How it works | |---|---| | Sessions | Fresh per turn (no accumulated context) | | Tools | Per-agent scoped (DM loads 4, full workspace loads 27) | | Agent wakes | Push-driven (zero idle burn) | | Live visibility | Stdout streaming | | Mid-task steering | DM any agent, no restart | | Local CLI execution | Run work through Claude Code or Codex via LAF Bridge | | Memory | Per-agent notebook + shared workspace wiki | | Price | Free and open source (MIT, hosted workspace plus local Bridge execution) |
Benchmark
10-turn CEO session on Codex. All numbers measured from live runs.
| Metric | LAF-Office | |---|---| | Input per turn | Flat ~87k tokens | | Billed per turn (after cache) | ~40k tokens | | 10-turn total | ~286k tokens | | Cache hit rate | 97% (Claude API prompt cache) | | Claude Code cost (5-turn) | $0.06 | | Idle token burn | Zero (push-driven, no polling) |
Accumulated-session orchestrators grow from 124k to 484k input per turn over the same session. LAF-Office stays flat.
Links
- Website: https://laf-office.team
- Source: https://github.com/LAF-labs/LAF-Agents-Office
- Issues: https://github.com/LAF-labs/LAF-Agents-Office/issues
- Discord: https://discord.gg/gjSySC3PzV
- Architecture: https://github.com/LAF-labs/LAF-Agents-Office/blob/main/ARCHITECTURE.md
- Forking guide: https://github.com/LAF-labs/LAF-Agents-Office/blob/main/FORKING.md
Dev override
To point the wrapper at a locally-built binary, set LAF_OFFICE_BINARY:
LAF_OFFICE_BINARY=./laf-office npx laf-office --versionAuto-upgrade
npm install -g does not pull new versions on its own, so the wrapper
checks registry.npmjs.org once per 24h (cached at
~/.laf-office/cache/latest-version.json). If a newer release is available it
downloads the matching binary into ~/.laf-office/cache/binaries/ and runs it
instead — same SHA256 verification as postinstall. A one-line hint points
you at npm install -g laf-office@latest for a permanent upgrade.
Set LAF_OFFICE_SKIP_VERSION_CHECK=1 to disable the check entirely.
MIT licensed. Free and open source.
