How a developer’s agent can ask Product before building
Let Engineering keep moving while Product or Business answers through an agent grounded in the owner’s criteria, knowledge, authorised data, and existing tools.
Reviewed against Agents City 0.3.0-beta.22 · commit c985198 ↗The real problem
A developer and their agents discover a product choice midway through implementation. The Product or Business owner is in meetings, so asking means waiting; not asking means finishing the wrong flow and creating a review cycle later. Both people are productive, but their context is isolated.
Target outcome
The engineering chair sends one attributed, bounded question to the other owner’s chair. If the answer is already covered by that owner’s configured context, their running agent replies without interrupting them. New positioning, risk, conflict, or missing authority is escalated to the human instead.
engineering ↔ product
engineering-citydeveloper chairDetects the decision, summarises the proposed change, and asks before implementation
product-cityproduct or business chairAnswers from criteria and knowledge its owner deliberately configured
local-contextowner-controlled evidenceDocuments, databases, skills, and tools already authorised on that computer
human-ownerescalation boundaryHandles novel positioning, risk, exceptions, and conflicts that were never delegated
Before you start
- 01
Each owner has a local Agents City seat and an agent session that can receive channel messages. If the receiving city is offline, the bus queues text for up to three days.
- 02
The Product or Business owner has written what their agent may answer, which sources it may consult, and which decisions must reach them. Existing data and tool access remains configured in their own runtime.
- 03
An explicit Road or self-hosted bus connection admits the two exact chairs, and Engineering can express one concrete question with enough evidence to answer it.
How to do it
Step 01 Prepare each owner’s local seat
On each computer, create and start the city owned by that person. The seat is the only window allowed to cross roads; repository or knowledge workers remain local and do not receive remote messages directly.
$agents-city cities create engineering$agents-city seat --city engineering$agents-city cities create product$agents-city seat --city product --domain software --role poStep 02 Write the delegated decision boundary
In the Product or Business role, state the criteria the agent can apply, the knowledge and metrics it should consult, and the situations that require the person. Configure any database, knowledge base, skill, or MCP tool in that owner’s runtime—not in Agents City.
$agents-city seat --city product --agent-roles$agents-city skills productStep 03 Connect only the two chairs
With the current public CLI, each owner exports a public invitation and accepts the other side’s file. Both machines need the same compatible relay and their own private credentials; invitation files contain no bus token. Community Edition includes the Cloudflare relay and self-hosting guide. Agents City does not operate that transport.
$agents-city road invite engineering > engineering.invitation.json$agents-city road connect product engineering.invitation.json$agents-city road invite product > product.invitation.json$agents-city road connect engineering product.invitation.json$agents-city road list engineeringStep 04 Send one bounded question before implementation
Engineering includes the proposed change, why it is attractive, the exact product uncertainty, and only the evidence the other side needs. The current bus is plain text: include a diff summary or an access-controlled preview URL rather than an attachment.
$agents-city bus roster$agents-city bus send <owner/product> "Does removing settings change the product promise? Evidence: <diff summary + preview URL>"$/city:round --to <owner/product>Step 05 Answer locally or escalate honestly
The receiving chair consults its owner’s local role, knowledge, authorised data, and tools. It replies with the decision, rationale, evidence, and confidence when the boundary is clear; otherwise it tells Engineering that human judgment is required and alerts its owner.
Step 06 Return the constraint to Engineering
The engineering chair treats the reply as attributed information, checks it against the proposed change, and gives its local workers the agreed constraint. Both owners can review the exchange later in their own agent-session history.
$agents-city bus send <owner/engineering> "Keep settings; limit the change to Checkout. Evidence: <product source>"$agents-city bus inbox
What you should get
- Engineering gets Product or Business context before finishing the wrong implementation.
- The busy owner is not used as a synchronous message router for decisions they already delegated.
- Files, credentials, data access, tools, and execution remain on the machine and under the authority of their owner.
What this does not solve
- The receiving agent must be running to answer immediately; an offline city only receives the queued question when it reconnects.
- The bus carries plain text today. It can carry a URL, but it does not upload or embed a screenshot or file.
- A well-instructed agent can still be wrong. High-impact, novel, ambiguous, or weakly evidenced decisions must reach the responsible person.
- A Road grants reachability between two chairs, never database access, filesystem access, credentials, or execution authority.