Agents Office turns a folder of notes into a desk of Claude agents
Agents Office v3 (Beta) — a headless office where AI agents do real work
At a glance
- What is it?
- Agents Office is a 3D isometric office simulation where 35 named agents sit in six departments, pick up tasks typed into a task bar, work through the connectors you already have in Claude Code, and file their output back into a notes graph. It runs entirely on your own machine and your own Claude login, and its licence is non-commercial, which is the constraint to read before anything else.
- Who is it for?
- Agents Office suits an individual or an internal team that already runs Claude Code with connected services and wants an agent workspace whose state lives in plain files, and it does not suit anyone who needs to ship it inside a commercial product, because the licence forbids reselling it, bundling it with another product, or removing the Sahni.ai mark.
- Can I use it commercially?
- Check first. The repository uses a licence we do not classify automatically, so read its LICENSE file before any commercial use.
- Is it still maintained?
- Yes. The repository last received commits 15 days ago.
- What is it written in?
- Mainly JavaScript, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.
Editorial analysis
Six departments, thirty five desks and one notes folder
Agents Office is a 3D isometric office where AI agents do real work on your own Claude login. The description in the project documentation is specific about the arrangement: six departments, thirty-five agents at their desks, a task bar that routes what you type to the right agent, and a Brain at the centre that is your own folder of notes.
The loop is short. You type a task in plain words, the office gives it to the right person, the agent reads your notes, uses the connectors you have already set up in Claude Code, does the work, and files the result back into your notes. Everything runs on your machine, which is the design decision that shapes everything else.
The audience is people who already use Claude Code and have connected services to it. The project assumes a Claude Code login, or an ANTHROPIC_API_KEY, and it assumes your working context is a set of notes you are willing to point at. This is not a general chat interface with an office skin over it, and the difference matters: the agents are named, seated, and attached to connectors rather than being a single assistant.
The project states its own status plainly. The documentation calls it beta, says it works end to end, and asks you to expect rough edges and report them as issues.
Cloning, the setup script and the server on port 4520
The install path is short and it checks your machine before it does anything. The requirements are macOS or Linux, Node.js 20 or newer, git, and either Claude Code logged in with your Claude account or an ANTHROPIC_API_KEY. On Windows the npm commands work directly, but the setup script is Bash only.
The documented sequence is:
git clone https://github.com/ajsahni/agents-office.git
cd agents-office
./setup # checks Node, git and Claude; installs; builds; boots once
npm start # → http://localhost:4520The setup script checks for Node, git and Claude, installs the dependencies, builds and boots once. If you would rather do it by hand, the documentation gives the equivalent: npm install, then node build.mjs, then npm start.
The scripts in the package metadata match that. start runs node serve.mjs, build runs node build.mjs, and there are check and check:live scripts, the latter driven by a CHECK_LIVE environment variable, plus a graph script that runs node graph-build.mjs. The package is an ES module project with Node 20 or newer required, marked private so it is not published to a registry, and its only runtime dependency is d3-force. The heavier libraries, esbuild, three and playwright-core, are development dependencies, and the Anthropic SDK is an optional dependency.
The first screen you see is the office itself. The panel on the right reads LIVE · CLAUDE when the server is connected, and there is also a standalone path: double-clicking dist/command-centre-v2.html opens the same office on its own, with no server, in demo mode.
The Brain is a graph of notes, not a chat transcript
The Brain is the part of the design that gives the office its memory. It is described as your own folder of notes, and you open it by pressing G or by clicking the Brain in the interface. What you see is a graph rather than a list, and hovering a note shows its links while clicking it shows where the note sits and who read or wrote it.
That last detail is the interesting one. Because a finished deliverable lands in the brain folder as a note, and because the note records which tools were used, the folder accumulates a record of what the agents did on your behalf rather than only what they said. The graph build is a separate script, graph-build.mjs, and the d3-force dependency in the package is the layout engine for it.
The intended learning path is explicit. The documentation warns that the first deliverables will be competent and generic, because the agents know the sample studio and one sentence about their own job, and that the way to make the office yours is to point the brain at your notes and then teach the agents how you work.
The teaching mechanism is a conversation. Say set up to a department lead and the lead interviews you. And a correction such as revise: make it shorter becomes a standing rule, so the agents do not have to be told the same thing twice. A related file, learn.mjs, sits alongside the other modules in the repository, and SKILLS.md and the skills/ directory suggest the same idea applied to reusable skills rather than single agents.
Connectors come from claude mcp list, and permissions are per server
The bar under CONNECTED TO is described as real: it is the list from claude mcp list on your machine, and it is the same list the agents receive as tools. Gmail, Slack, Notion, Google Drive and Canva appear as examples, and those are the services you have connected in claude.ai or added with claude mcp add.
Two failure modes are handled explicitly. A server that needs authentication is shown grey with the reason on hover, and it is not wired to any pod until it works, so a half-configured connector cannot silently reach an agent. If nothing is connected, the bar says so rather than showing an empty grid.
What the agents may touch is decided in office.config.json, and the shape of that file is short enough to read in one pass:
"mcp": { "allow": [], "deny": ["Stripe"], "departments": { "Slack": ["emails", "ops"] } },
"tools": { "web": true, "browser": true },
"teams": { "enabled": true, "max": 4 }An empty allow list means every connected server. deny keeps a server visible in the bar but out of the agents' reach, and the same mechanism covers the browser. departments decides which pods a server is wired to, with a default for known brands and everything else feeding every pod. Setting tools.web to false keeps the agents off the web, and tools.browser to false keeps them out of your Chrome.
The safety rules are partly enforced by the design and partly by instruction. The agents never get Bash, file tools or sub-agents. Their standing rule is to read freely, and to send, post, pay, delete or change anything outside your machine only when your task explicitly asks for that exact action. Tool use requires the Claude Code login; on an ANTHROPIC_API_KEY the agents work from your notes only.
Thirty five fixed desks you rename rather than add
The roster lives in office.agents.json, and each entry carries an id, a department, a name, a role, what they do, and the connectors they usually use. You can change the name, the role, the description and the tools.
What you cannot change is the shape of the office. Departments, leads and seats are fixed at six pods and thirty-five desks, and the documentation says a new kind of agent is a renamed seat in the right department. That is a deliberate constraint, and it is worth understanding before you start, because it means the office is a fixed organisation chart with editable occupants rather than a system you extend.
The easy way to edit it is to let Claude do it. Open Claude Code in the project folder and describe the change, for example renaming the Newsletter agent to PODCAST NOTES with a different job description and a different connector. The example in the documentation is a prompt you paste into the Claude Code session, not a configuration file you edit by hand.
The runtime modules mirror the feature set. roster.mjs holds the roster, teams.mjs the team behaviour, routines.mjs the scheduled work, mcp.mjs the connector integration, usage.mjs the usage figures, config.mjs the configuration, onboard.mjs the first-run path, and skills.mjs the skills. The three.js dependency is what draws the isometric office, with esbuild assembling the bundle.
Routines, teams, a calendar and a per-task model choice
The releases from September 2026 show how the office grew into a work tool rather than a toy.
Routines are tasks on the office's own clock, with a needs my OK gate before anything goes out, which is the difference between a background agent and one that can act in the outside world. Agent Teams are started by pressing TEAM or by saying as a team: the department lead splits the job across its desks, the agents work at the same time and leave notes for each other, and the lead writes the final. The teams section of the configuration caps the group at four.
The calendar is opened with P and puts everything on the day it belongs to, finished tasks, today's work, scheduled tasks and every routine projected forward. You can click any day to schedule a task for it, or switch on REPEAT to start a routine from that date, and there is month and week view with dark mode.
Model choice is per task, per routine, per agent or per office, covering Sonnet, Opus or Fable, with an effort menu and a gauge in the top bar showing your plan's session and week usage. Claude in Chrome lets the agents use your own browser for any site you are signed in to, under the same read freely, act only when asked rule, and that is the feature the tools.browser switch in office.config.json turns off.
The CHANGELOG file holds the full list release by release, which is the fastest way to see what a given build added.
A non-commercial licence, a beta version and an honest status
The licence is the first thing to read, because the plain English summary in the documentation is unusually direct.
Agents Office is a Sahni.ai product. It is free for personal and internal use. You may not sell it, resell it, or build a paid product on it. You may not rename it, rebrand it, strip the Sahni.ai mark or the notices, present it as your own, or wire it into or bundle it with another product, agent system or workforce. The formal terms are PolyForm Noncommercial 1.0.0 plus Sahni.ai's additional terms, in the LICENSE file. The page also carries the Sahni.ai mark at the bottom-left and a licence line along the bottom, which are to be left in place.
For a personal or internal use case that is a workable licence. For anything that reaches customers, it is a hard stop, and the prohibition on bundling with another product or agent system is narrow enough to matter to anyone considering a wrapper.
The version story is beta in two senses. The project calls itself beta in its own documentation, and the published versions are beta builds, with v3.2.1-beta.2 on 2026-09-19, v3.2.1-beta.1 on 2026-09-16 and v3.2.0-beta.3 on 2026-09-16. The package metadata version matches the newest of those. The repository is not archived and the last push was on 2026-10-08, so work continues after the September tags.
A second beta caveat is architectural. The whole thing is local: a server on port 4520, a folder of notes, and the connectors that Claude Code on your machine can already see. There is no hosted component in the documentation, and no account to create beyond the Claude login you already have.
Editorial conclusion
Agents Office suits an individual or an internal team that already runs Claude Code with connected services and wants an agent workspace whose state lives in plain files, and it does not suit anyone who needs to ship it inside a commercial product, because the licence forbids reselling it, bundling it with another product, or removing the Sahni.ai mark. Before adopting it, read the LICENSE file, then run ./setup and check the connectors bar against claude mcp list, since an agent only gets a tool once that server authenticates on your machine.
Frequently asked questions
How do I install and run Agents Office?
Clone the repository, run ./setup, which checks Node, git and Claude, installs, builds and boots once, then run npm start and open http://localhost:4520. Without the setup script the documented equivalent is npm install, node build.mjs and npm start.
What does the Brain in Agents Office hold?
The Brain is your own folder of notes. It opens as a graph when you press G or click the Brain, hovering a note shows its links, and clicking it shows where it sits and who read or wrote it, including the tools a deliverable used.
Which tools can the agents use in Agents Office?
The agents get the connectors listed by claude mcp list on your machine plus web search. They never get Bash, file tools or sub-agents, and what they may reach is narrowed in office.config.json through the mcp allow, deny and departments entries and the tools.web and tools.browser switches.
Can I add my own agents to Agents Office?
Not as new seats. Departments, leads and seats are fixed at six pods and thirty-five desks, and a new kind of agent is a renamed seat in the right department, edited through office.agents.json or by asking Claude Code in the project folder to make the change.
Can I use Agents Office in a commercial product?
No. The licence is PolyForm Noncommercial 1.0.0 plus Sahni.ai's additional terms, which allow free personal and internal use but forbid selling, reselling, building a paid product on it, removing the Sahni.ai mark, or bundling it with another product, agent system or workforce.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/ajsahni-agents-office)Was this useful?