# Learning by building a multi-agent design lab. Yet, single agent works better

> Source: <https://github.com/bencodev/dsgnrd>
> Published: 2026-10-21 08:43:49+00:00

*Sharing news on this project from [my substack](https://substack.com/@benzercotte/note/c-358201386?r=62mul&utm_source=notes-share-action&utm_medium=web)*

This is a learning project to explore how agents can cooperate in design collaboration, drawing on the [dust-tt/srchd](https://github.com/dust-tt/srchd) project.

Requires Node.js 24.15+ and npm 12+. From the repository root, run `npm ci` and `npm run migrate`, then add `ANTHROPIC_API_KEY=your-key` and `FIRECRAWL_API_KEY=your-key` to `.env` (ignored by Git).

Use the included [Oldskaters brief](https://github.com/BenCoDev/dsgnrd/blob/main/problems/oldskaters/trick-reveal/problem.md):

```
npx tsx src/dsgnrd.ts experiment create oldskaters-reveal \
  -p problems/oldskaters/trick-reveal
```

Connect Mobbin once for design references (requires a qualifying Mobbin plan):

```
npx tsx src/dsgnrd.ts mobbin login
```

Open the printed URL and authorize your account. Credentials stay in `~/.config/dsgnrd/mobbin`; `mobbin disconnect` removes them locally. Design agents can search screens, flows and website sections; returned previews and source links are saved in their conversations. Mobbin usage is separate from model costs and is not included in `--max-cost`.

Create two Haiku agents using the [design instructions](https://github.com/BenCoDev/dsgnrd/blob/main/agents/design/prompt.md), then run them with one peer reviewer each:

```
npx tsx src/dsgnrd.ts agent create -e oldskaters-reveal -n designer \
  -p design -m claude-haiku-4-5 -c 2
npx tsx --env-file=.env src/dsgnrd.ts agent run all \
  -e oldskaters-reveal --reviewers 1 --tick
```

Repeat only the run command to continue. Remove `--tick` to run continuously; stop with Ctrl-C. Conversations and results are saved in `db.sqlite`.

Design agents can inspect public websites through Firecrawl: screenshots and page text are saved in their conversations. For open → inspect → click → inspect, run continuously: a browser session is reused between ticks but closes when the command ends, including `--tick`. Each agent gets at most two five-minute sessions per invocation and ten actions per session. Firecrawl credits are separate from model costs and are **not included in `--max-cost`**. Existing agents pick up the tools on restart; use `agent instructions <name> -e <experiment> -f agents/design/prompt.md` to deliberately adopt the updated guidance.

```
npx tsx src/dsgnrd.ts serve
```

Open [localhost:1337](http://localhost:1337) to browse publications, reviews, solutions, conversations, instruction changes and estimated cost. No API key is needed. Refresh to see newly saved activity; the dashboard does not run agents or edit records.

Use `--port 1338` for another port, or `DATABASE_PATH=/path/to/db.sqlite` to inspect a different migrated database. The server listens on your computer only.

To optimise for learning, I chose to preserve srchd's architecture as much as possible. The same relationships connect agents, their contributions, their reviews, and the solutions they currently favor.

**Status:** all nine tables shown below are implemented, including the runner’s conversation/usage storage and the publication/review/solution resources. See the [implemented schema](https://github.com/BenCoDev/dsgnrd/blob/main/docs/diagrams/dsgnrd-current.svg) ([Mermaid](https://github.com/BenCoDev/dsgnrd/blob/main/docs/diagrams/dsgnrd-current.mmd)). The design meanings preserve srchd's table names and relationships. `experiments.problem` stores a file or folder reference, not the brief text.

The full model is shown in the same two views as the Notion diagrams: collaboration, then agent history and usage. Both columns preserve the same fields and relationships. The focused views omit timestamp columns; the implemented overview includes every column and foreign key.

| srchd · Research collaboration | dsgnrd · Design collaboration | 
|---|---|
| Research and collaboration |  | 
| Agent history and usage |  | 

Click a diagram to open it at full size.

Composite uniqueness constraints are unchanged:

| Table | Unique columns | 
|---|---|
| `agents` | `experiment` +`name` | 
| `publications` | `experiment` +`reference` | 
| `reviews` | `author` +`publication` | 
| `citations` | `experiment` +`from` +`to` | 
| `messages` | `experiment` +`agent` +`position` | 

`experiments.name` is also unique. The foreign keys alone do not enforce that linked records belong to the same experiment.

Source: [srchd's database schema](https://github.com/dust-tt/srchd/blob/4b5ffb44bdc6bb1d2181d746ec951dd30f89ed08/src/db/schema.ts), checked on 2026-10-09. Editable Mermaid sources: [srchd collaboration](https://github.com/BenCoDev/dsgnrd/blob/main/docs/diagrams/srchd-model.mmd) · [dsgnrd collaboration](https://github.com/BenCoDev/dsgnrd/blob/main/docs/diagrams/dsgnrd-model.mmd) · [srchd history](https://github.com/BenCoDev/dsgnrd/blob/main/docs/diagrams/srchd-history.mmd) · [dsgnrd history](https://github.com/BenCoDev/dsgnrd/blob/main/docs/diagrams/dsgnrd-history.mmd). SVG exports keep each comparison side by side in the README.
