Conversation
I had some confusion as Traefik URLs were printing in logs but it wasn’t actually running.
I stopped being able to access the host after the realm server had errors starting up.
lvh.me was blocked in Puppeteer!
Preview deployments |
|
so how do you segregate the host app that the prerenderer uses so that it is the corresponding host app? |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 8b74ae5faa
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Traefik routes local subdomains ( |
hmm let me look more into this, though, maybe it’s not properly wired up, as I couldn’t see any prerenderer URLs in the logs when I added debug logging |
|
regarding your TODO: "what’s the deal with localhost:4205 realm(s)" this is the isolated realm that we run programmatically in isolated-realm-server.ts. i would imagine that you could just also set the |
|
@habdelra’s question about the prerenderer prompted me to look deeper and that part isn’t working with this yet. The part in the video can still be reviewed, but having a working prerenderer is definitely a requirement before this is usable. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 216fa750f8
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
|
||
| cd ../matrix | ||
|
|
||
| pnpm assert-synapse-running |
There was a problem hiding this comment.
Fail immediately when Synapse readiness check fails
pnpm assert-synapse-running is executed without set -e (or an explicit || exit), so in environment mode a failed Synapse bootstrap can be ignored and the script can still exit successfully when the .users-registered marker already exists. In that case start:all treats Matrix setup as complete and only fails much later while waiting on Matrix URLs, which makes startup flaky and hard to diagnose when Docker/start-synapse fails.
Useful? React with 👍 / 👎.
| for CONTAINER in $(docker ps --format '{{.Names}}' | grep '^boxel-synapse-'); do | ||
| SLUG="${CONTAINER#boxel-synapse-}" | ||
| # Check if any process is using this environment's slug (realm server, host, etc.) | ||
| if ! ps ax -o command 2>/dev/null | grep -q "${SLUG}\.localhost"; then |
There was a problem hiding this comment.
Broaden stale Synapse detection before auto-removal
The stale-container check removes boxel-synapse-<slug> whenever no process argv contains ${slug}.localhost, but active services are not guaranteed to include that token (for example, host is launched as ember serve --port ... in packages/host/scripts/ember-serve.js). This can incorrectly delete a live environment’s Synapse container when Traefik is started from another workspace, causing unexpected Matrix outages even though environment processes are still running.
Useful? React with 👍 / 👎.
# Conflicts: # packages/host/config/environment.js
|
I have gone through the steps in the description and was able to get my parallel environment working! Still need to go review code as it's quite a lot of changes. This is really neat but unfortunately my machine (18GB, M3) struggles with the memory pressures even of a single boxel environment, but hoping this gets better once we get Vite working 😌 |
# Conflicts: # packages/realm-server/prerender/prerenderer.ts
thanks for noting this, I have 64GB RAM so I haven’t seen it. At worst this still works to review code without having to switch away from one’s current focus branch, even if they can’t both run at once. But I too hope Vite brings us optimisations here. |

This adds a
BOXEL_ENVIRONMENT“environment mode” that lets us start any number of Boxel environments with isolated host, realm server, database, Synapse instance, and AI bot. The environment will be empty with the standard development users (user/password).screencast.2026-03-04.12-04-16.mp4
The video skips through some slow steps (
pnpm install, host build), some future improvements would be helpful:misefor task consolidation/rationalisationBut even as is this will make it much easier to check out PRs for review, especially if your development environment is in a weird state (as mine has been through the
@cardstack/catalog/@cardstack/basemigration).Try it out
Check out the branch, ideally while already having a full environment running elsewhere to experience true parallel environments.
Setup:
Start
host:near the top of the output:
http://host.parallel.localhostis where you’ll access the application.Start
realm-server(in another tab):Start
ai-botif you want:Bonus script
Try this if any processes are lingering and/or you want to drop the database for the branch:
It also has a
--dry-runto see what processes it would end.Todos
custom domain instead ofseems unnecessarylocalhost? was suggested earlier but Puppeteer blocked lvh.me so…synapse-data-*directories?areno they’re slow everywherehostbuilds v slow?register-realm-usersseems annoyingprobably macOS-centric at the momentClaude says no?!localhost:4205realm(s)