The hardest problem in multiplayer agents, at least for us, has not been the agent loop. It is scoping and QM's per-person scopes plus shared rooms is a sane answer for a company-wide assistant.
I build in the adjacent lane, AQ (aq.dev), a multiplayer coding harness where teams run Claude Code and Codex together), so seeing YC ship "a multiplayer agent harness for work" is validating and a little surreal.
Would be cool if in a few epic tickets i'll have both their org wide architecture AND a productive individual coding interface :)
This software appears to be yet another solution in search of a problem designed to burn as many tokens as possible.
But feels like its written to run on one mac/vm and carries same drawbacks of other similar platforms. I'd rather use Hermes/Openclaw for oss or closed managed agents like Tasklet or Prajvis
Oh grand. The world will be full of agents talking to agents and nothing getting done. So pretty much the same only I can just leave my machine awake to look busy.
Interesting approach to open source contributions. Closer to feature requests at that point?
Also, what are power uses really using openclaw like systems for?
I've become attached to Orca (yc-backed) for managing coding sessions in the past week, but some sort of postgres session db is what's really lacking. So, maybe it's time to try qm.
> description: Anti-slop frontend skill for landing pages, portfolios, and redesigns. The agent reads the brief, infers the right design direction, and ships interfaces that do not look templated. Real design systems when applicable, audit-first on redesigns, strict pre-flight check.
> - *PREMIUM-CONSUMER PALETTE BAN (mandatory, second-most-recurring AI-tell):* - For premium-consumer briefs (cookware, wellness, artisan, luxury, heritage craft, DTC home goods, etc.)... - Backgrounds: `#f5f1ea`, `#f7f5f1`...
> Landing pages and portfolios are *visual products*. Text-only pages with fake-screenshot divs are slop.
https://github.com/yc-software/qm/blob/7f2c916360f1797a8ff2a...
"Given that coding agents write most underlying code now, we'd prefer PRs in the form of human-written text. [...] Please do not have AI artificially expand what you'd like to do into a formal proposal."
Starting to think people were right when they talked about our industry itself having an AI psychosis problem.
Because people want to be able to do things like use their own clients of pi or opencode with LLMs they run themselves, such as the just released deepseek v4 flash 0731, not permanently tied to an Anthropic ecosystem of non-open-weight LLMs and pay forever per token.
Many people don't want to support a company pushing for regulatory capture.
- automatically fixing simple CI failures
- getting production alerts and automatically creating RCAs and a fix PR
- periodically checking slow DB queries and finding ways to speed them up.
- creating charts to answer one-off questions about our data
I've tried using it as an on-the-go coding agent as well, but found I prefer more interactive agents, so I can see what the code looks like.
I have one reading my second tier RSS feeds and newsletters and giving me news/market updates filtered for things important to me
Yesterday I just decided to try writing my own version (100% just for me, not open source, no monetization plan, incredibly custom) and I've been enjoying working on it so far (I know, I know, it's been a day, honeymoon period and all that).
Part of it is I like building software (even if I'm not writing every line) and part is I like having full control. Turns out (and many people have said this) the basic agent loop really isn't all that special. There are a million levers to pull and what not outside the base loop but that the fun part for me. Trying out different ways to add on to the core concept.
I'm really enjoying being untethered for things like "how will I monetize?" or "how do I make this generic so others can use it?". If I need functionality I just add it in, I don't need to make it infinitely pluggable, etc.
All that said, I'm thankful to things like nanoclaw and then Hermes for exposing me to the core ideas. I just want to put my own spin on it.
0: https://github.com/pjlsergeant/byre?tab=contributing-ov-file
> Please write our prompts for us
The idea is that the core dev team is the one with the AI harness. If someone contributes an idea they can just feed it to their AI to implement it and it probably costs 10 minutes of human time, because they trust that their harness will be able to implement the feature competently.
So, because the implementation effort is so low, the only aspect that matters if the quality of the idea. It's way easier to screen human written text than a bunch of code in a PR. If you just give them code, they would not know if you made it with a competent harness. If you gave them a AI written design they would have a lot more to read through to decide whether it's slop. If you just give them an idea it's a lot easier to determine whether it's high quality.
> the project does not accept patches from random people on the internet
https://sqlite.org/copyright.html
In their case, it's motivated by a desire to keep copyrighted code out of the SQLite implementation, but I'm sure it has a nice benefit of making it so that an extremely widely used project doesn't get drive by, low effort code review requests while still allowing the community to engage.
Asking that "random people on the internet" don't sent code is not altogether a novel, post-AI idea.
Also, it's a AI project; what, exactly, do you think they're going to try and do?
I'd prefer if you explain what it is you are building in the form of human-written text.
A multiplayer agent harness for work. In Slack and on the web.

Most agents are designed like personal assistants. You can make one work for a whole company, but it quickly gets complex. QM is designed for startups. Employees each get their own isolated workspace and work independently without affecting each other, and they can also collaborate with the agent in channels, group messages, and projects.
Each person and each room has its own scoped memory, files, keychain view, permissions, crons, web apps, and durable sandbox.
It's built with open source in mind. Pick your own harness and model and switch between them — Pi, OpenCode, Codex, and Claude Code all drive the same core, so a deployment isn't tied to any single vendor.
flowchart LR
DB[("Postgres<br/>sessions · memory · queue")]
subgraph CORE["Headless core"]
API["API · identity · policy · scheduler"]
LOOP["Agent loop<br/>(Pi, OpenCode, Claude Code)"]
API <--> LOOP
end
SBX["Per-scope sandbox<br/>files · tools · logged-in services"]
DB <--> API
LOOP <--> SBX
Every turn runs through a central core, which can use a variety of models and harnesses
to generate the response. A Postgres persistence layer holds user data, session history,
and other durable state. The agent has a small, fixed tool surface; one of those tools is
execute, which runs commands in the scope's own isolated sandbox — its durable computer,
where installed tools stay installed. The web UI, the admin panel, and the public portal
are optional plugins over the core's HTTP API;
Slack is an optional in-process plugin that core starts
and supervises through a direct service client.
The core runs TypeScript directly on Node and uses Fastify for HTTP. The Slack plugin uses Bolt; the web UI builds with Vite and renders with Lit.
The core itself is generic. Everything specific to one company — org config, custom tools
and skills, sandbox image, infrastructure — lives in a deployment directory that the
qm CLI validates and deploys. Every substrate (harness, session
store, sandbox, memory) sits behind an interface, so production implementations swap in
via one wiring file.
QM's approach follows local coding agents like OpenCode, Codex, and Claude Code: the agent acts as the person it's working for, with their credentials and permissions, and everything it does is audited. An org picks one security posture, which narrower scopes can only tighten:
The predeclared command policy — approval rules and hard denials for things like recursive deletes or destructive SQL — applies in every posture, Dangerous included.
SECURITY.md has the threat model, the operator assumptions, and the
known limitations.
Create an organization-owned deployment repository that depends on @yc-software/qm:
npm exec --yes --package=@yc-software/qm@latest -- \
qm init . --org <slug> --target <fly-or-aws>
npm install
Initialization materializes a deployment skill for an agent and walks through
infrastructure, web sign-in, connector credentials, optional Slack access, deployment,
and live verification — no source checkout required. Each deployment runs in the
operator's own cloud account; initialization does not generate or enable deployment CI,
and this repository has no production deployment workflow. See
deployment.md for the details.
We take contributions as human-written text, not code — see
CONTRIBUTING.md. Describe the change you'd like informally in a
.txt or .md file in adrs/, and if we're aligned we'll handle the
implementation. Report vulnerabilities privately — see SECURITY.md,
not a public issue.
The deployment repository above carries config and a sandbox layer, and never needs a source checkout. Some organizations want the opposite trade: the whole codebase in one place, so engineers and coding agents read core and customizations together, while the customizations themselves stay private. For that, keep a private fork: a standalone private repository whose history begins as a clone of qm and whose core stays identical to upstream.
Populate it once, then clone it to work in:
gh repo create <org>/qm-private --private
git clone --bare git@github.com:yc-software/qm qm-seed.git
git -C qm-seed.git push --mirror git@github.com:<org>/qm-private
rm -rf qm-seed.git
git clone git@github.com:<org>/qm-private
git -C qm-private remote add upstream git@github.com:yc-software/qm
Create the private fork with a plain clone, as shown above, and never with GitHub's fork feature. The word "fork" here names the concept — a downstream copy that diverges deliberately and merges from upstream — not GitHub's Fork button. A GitHub fork inherits the visibility of the repository it came from, so a fork of a public repository cannot be made private. A GitHub fork also shares one object network with the repository it came from, so commits pushed to the fork stay fetchable by SHA from the public side. Many organizations disallow forking private repositories as well. A plain clone has none of these problems, and it costs one thing: the clone is an ordinary repository, so upstream's CI workflows run live in your own account. Expect to supply the secrets those workflows need, or disable the ones you do not want running.
Everything specific to your organization goes in deploy/layers/<org>/ — config, sandbox
tools and skills, plugin images, infrastructure — in the same shape qm init produces. See
deploy/layers/README.md. Core stays byte-identical to
upstream, which is what keeps merges small.
Two skills maintain the boundary in both directions. update-qm merges upstream qm into
the private fork and opens the sync PR; upstream-pr sends an organization-agnostic fix back to
qm, cutting the branch from upstream/main and checking the outgoing diff, commit
messages, and screenshots for organization identifiers before it pushes. Nothing under
deploy/layers/ ever travels upstream.
docs/getting-started.md — first run, end to endcli/README.md — the qm CLI and the deployment directory contractdocs/deploy-directory.md — the deployment directory in full.env.example — every knob, documented in placeplugins/ — the surfaces (Slack, web UI, admin, portal)Except where otherwise noted, QM is available under the MIT License.
How does this work in practice?
What's notable to me is that ux doesn't so far generally have this behavior. That as per this post people just build a new app, a new experience.
I want to believe over time we'll have better composable & malleable ux experiences atop broader platforms for us. That over time the "go it alone" path has other worth ways to innovate that use a more substantial shared base. It's dangerous to go it alone, and doing so equipped with just our wooden sword and some courage and perhaps an LLM wisp is an amazing adventure, but I think the survival rate & impact would be much better if we had more general ux systems that supported better innovation atop them, and if less people did the pure "why not build your own" path.
I've been playing around with using a hidden markov model informed by a UI state event stream, with the end state fed into the Agent as a hint on each message turn. Then the Agent can make a tool call to add events to the HMM. This has been really interesting, but I haven't struck the right balance to make it actually feel good for the user yet
Like I said, I do understand and appreciate how annoying it must be. But there are two ways to look at this, one is that it's free software a bug report is like a support request - and of course nobody should expect free support. The other way to look at it is that by reporting bugs I'm volunteering as QA for the project and the report is beneficial.
For example, many rumors say SSI has solved learning and retaining state. That would significantly change AI requirements.
I'd like to know more, for example why now?
I personally would probably have the readme generated based on that directory as the primary document, probably with another `readme_generation_rules.md` in the ADRs directory, and I would be pretty ruthless about disallowing all the slop-adjacent wording.
I still use Claude code (and codex and other big contenders) because they know what they are doing and innovate in ways I don't want to miss. And sometimes they are better at tasks.
[0]: 2023, https://github.com/sigoden/aichat [1]: 2024, https://github.com/aaif-goose/goose
The substance <> narrative relationship is backwards a lot of the time. Someone does something for a nebulous multitude of reasons, and then post-hoc fits their decision-making into a logical explanation that sounds nice.
There is some psychology research supporting this as well.
I suppose if you see the narrative itself as part of the release, that might be interesting. But most of the time I’d rather just hear plainly and straightforwardly what the thing is.
Or at the very least, I am very accepting of releases which do not include rationalization / narrativization and don’t think it’s required to include.
I’d think that trying to play whack-a-mole with slop like that would result in a lengthy prompt, as well as being brittle to future changes.
If you want the prompt to be the source of truth, you’re probably going to have to accept prose that feels like AI, at least until you can regenerate with some future smarter model.
i understand why they want their own agent to do the code, and i can see the reasoning behind it. but not allowing ai to format/tidy up/flesh out the proposal is the part that i thought was a little funny.