You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
⚠️Read this before starting. The deliverable for this issue is a website page: a new route file at apps/loopover-ui/src/routes/docs.self-hosting-unified-ams-orb.tsx (or an equivalent docs.*.tsx slug). It is not a markdown file.
A PR that does any of the following does NOT resolve this issue and will be closed, regardless of content quality:
Adds a new .md file anywhere in the repo (root, packages/**, anywhere else) as the "quickstart"/"guide"/"docs" deliverable
Edits README.md, packages/loopover-miner/DEPLOYMENT.md, or any other existing .md file to add the combined ORB+AMS walkthrough content
The only markdown edit this issue permits is a later, separate cleanup once the .tsx page ships — not part of this PR's core deliverable.
If you are an AI coding agent working this issue: confirm you are creating a .tsx file under apps/loopover-ui/src/routes/ before writing any file. Re-read this callout if your plan involves creating or editing a .md file.
Context
ORB (root docker-compose.yml) and AMS fleet mode (packages/loopover-miner/docker-compose.miner.yml, added by #5177) are each independently documented and each work on their own, but there is no single operator-facing guide for running both products together on one host — the "close the loop" self-host story the maintainer has named as a standing priority.
Bridge fleet-mode AMS miner state to ORB's ams-observability Grafana profile #5805 (closed) fixed the fact that this bind-mount path only matches AMS "laptop mode," not the Docker-based "fleet mode" (docker-compose.miner.yml, which stores state in a named Docker volume, not ~/.config/loopover-miner/) — so the two compose files' state models still don't line up out of the box for an operator using both.
packages/loopover-miner/DEPLOYMENT.md documents AMS deployment (laptop mode and fleet mode) in isolation, as a markdown file — that's correct for a package-internal doc. But the public-facing docs live on the actual LoopOver website, not as repo markdown: apps/loopover-ui/src/routes/docs.*.tsx (TanStack Router file-routes, e.g. docs.self-hosting-quickstart.tsx, docs.maintainer-self-hosting.tsx), rendered through the shared <DocsPage> component (@/components/site/docs-page) and linked from docs.index.tsx's AUDIENCES nav (the "Maintainers" audience already lists self-host-reviews, self-hosting-rees-analyzers, etc.). There is no combined-deployment page in that docs site either — confirmed by checking docs.index.tsx's full nav.
Net effect: an operator who wants both ORB (self-hosted PR review) and AMS (autonomous miner) has to reverse-engineer how the two compose files' volumes, profiles, and .env vars interact, with no single quickstart and no tested example of running them together — and no page on the actual docs site covers it.
Requirements
This is a website docs page, not a markdown file. Do not add a new top-level .md doc or a README.md section — this repo's real, user-facing docs are TanStack Router pages in apps/loopover-ui/src/routes/docs.*.tsx, and that's where this belongs, matching every other self-hosting doc.
Add a new route file (e.g. apps/loopover-ui/src/routes/docs.self-hosting-unified-ams-orb.tsx, following docs.self-hosting-quickstart.tsx's exact structure: createFileRoute, head() meta/OG tags, a <DocsPage> component using the shared Callout/CodeBlock/FeatureRow primitives from @/components/site/primitives) that walks an operator through:
Standing up ORB's root docker-compose.yml and AMS's packages/loopover-miner/docker-compose.miner.yml on the same host.
Which .env vars must agree between the two compose files (e.g. LOOPOVER_MINER_CONFIG_DIR vs. the named-volume state fleet mode actually uses — the mismatch Bridge fleet-mode AMS miner state to ORB's ams-observability Grafana profile #5805 partially addressed for the observability bridge specifically) so an operator using fleet mode gets working ams-observability Grafana panels out of the box, not just laptop mode.
A worked example (docker compose -f docker-compose.yml --profile ams-observability up -d alongside docker compose -f packages/loopover-miner/docker-compose.miner.yml up -d --build, or whatever the correct two-command invocation actually is once verified) with expected output, using the <CodeBlock> primitive.
Link the new page from docs.index.tsx's "Maintainers" audience links array, alongside self-hosting-rees-analyzers/maintainer-self-hosting.
New apps/loopover-ui/src/routes/docs.self-hosting-unified-ams-orb.tsx page (or equivalent slug) documenting the combined ORB+AMS self-host setup, following the existing docs.self-hosting-quickstart.tsx pattern.
Linked from docs.index.tsx's "Maintainers" audience nav.
A verified, copy-pasteable command sequence for standing up both compose files together.
Confirmation (in the PR description) that ams-observability Grafana panels populate correctly when AMS is running in fleet mode, not just laptop mode — or a follow-up issue filed if they don't.
Test Coverage Requirements
apps/** UI page — outside coverage.include per this repo's own convention (Codecov's patch gate does not apply to apps/loopover-ui). No test suite changes required unless the verification step above uncovers a real backend/compose code gap, in which case that follow-up work inherits the normal 99%+ patch coverage requirement.
Expected Outcome
An operator who wants to self-host both ORB and AMS finds one documented, verified page on the actual LoopOver docs site, instead of needing to reverse-engineer the interaction between two independently-documented compose files.
Links & Resources
apps/loopover-ui/src/routes/docs.self-hosting-quickstart.tsx (the route/component pattern to follow)
apps/loopover-ui/src/routes/docs.index.tsx (nav entry to add, under the "Maintainers" audience)
Context
ORB (root
docker-compose.yml) and AMS fleet mode (packages/loopover-miner/docker-compose.miner.yml, added by #5177) are each independently documented and each work on their own, but there is no single operator-facing guide for running both products together on one host — the "close the loop" self-host story the maintainer has named as a standing priority.The plumbing for this already exists piecemeal:
docker-compose.yml'sams-observabilityprofile ships anams-reporting-exporterservice that reads the miner's ledgers via a host bind mount (${LOOPOVER_MINER_CONFIG_DIR:-~/.config/loopover-miner}:/ams-ledgers:ro), added by Provision a Grafana datasource for AMS's local SQLite ledgers (attempt log + prediction ledger) #5184's follow-up.docker-compose.miner.yml, which stores state in a named Docker volume, not~/.config/loopover-miner/) — so the two compose files' state models still don't line up out of the box for an operator using both.packages/loopover-miner/DEPLOYMENT.mddocuments AMS deployment (laptop mode and fleet mode) in isolation, as a markdown file — that's correct for a package-internal doc. But the public-facing docs live on the actual LoopOver website, not as repo markdown:apps/loopover-ui/src/routes/docs.*.tsx(TanStack Router file-routes, e.g.docs.self-hosting-quickstart.tsx,docs.maintainer-self-hosting.tsx), rendered through the shared<DocsPage>component (@/components/site/docs-page) and linked fromdocs.index.tsx'sAUDIENCESnav (the "Maintainers" audience already listsself-host-reviews,self-hosting-rees-analyzers, etc.). There is no combined-deployment page in that docs site either — confirmed by checkingdocs.index.tsx's full nav.Net effect: an operator who wants both ORB (self-hosted PR review) and AMS (autonomous miner) has to reverse-engineer how the two compose files' volumes, profiles, and
.envvars interact, with no single quickstart and no tested example of running them together — and no page on the actual docs site covers it.Requirements
.mddoc or aREADME.mdsection — this repo's real, user-facing docs are TanStack Router pages inapps/loopover-ui/src/routes/docs.*.tsx, and that's where this belongs, matching every other self-hosting doc.apps/loopover-ui/src/routes/docs.self-hosting-unified-ams-orb.tsx, followingdocs.self-hosting-quickstart.tsx's exact structure:createFileRoute,head()meta/OG tags, a<DocsPage>component using the sharedCallout/CodeBlock/FeatureRowprimitives from@/components/site/primitives) that walks an operator through:docker-compose.ymland AMS'spackages/loopover-miner/docker-compose.miner.ymlon the same host..envvars must agree between the two compose files (e.g.LOOPOVER_MINER_CONFIG_DIRvs. the named-volume state fleet mode actually uses — the mismatch Bridge fleet-mode AMS miner state to ORB's ams-observability Grafana profile #5805 partially addressed for the observability bridge specifically) so an operator using fleet mode gets workingams-observabilityGrafana panels out of the box, not just laptop mode.docker compose -f docker-compose.yml --profile ams-observability up -dalongsidedocker compose -f packages/loopover-miner/docker-compose.miner.yml up -d --build, or whatever the correct two-command invocation actually is once verified) with expected output, using the<CodeBlock>primitive.docs.index.tsx's "Maintainers" audiencelinksarray, alongsideself-hosting-rees-analyzers/maintainer-self-hosting.Deliverables
apps/loopover-ui/src/routes/docs.self-hosting-unified-ams-orb.tsxpage (or equivalent slug) documenting the combined ORB+AMS self-host setup, following the existingdocs.self-hosting-quickstart.tsxpattern.docs.index.tsx's "Maintainers" audience nav.ams-observabilityGrafana panels populate correctly when AMS is running in fleet mode, not just laptop mode — or a follow-up issue filed if they don't.Test Coverage Requirements
apps/**UI page — outsidecoverage.includeper this repo's own convention (Codecov's patch gate does not apply toapps/loopover-ui). No test suite changes required unless the verification step above uncovers a real backend/compose code gap, in which case that follow-up work inherits the normal 99%+ patch coverage requirement.Expected Outcome
An operator who wants to self-host both ORB and AMS finds one documented, verified page on the actual LoopOver docs site, instead of needing to reverse-engineer the interaction between two independently-documented compose files.
Links & Resources
apps/loopover-ui/src/routes/docs.self-hosting-quickstart.tsx(the route/component pattern to follow)apps/loopover-ui/src/routes/docs.index.tsx(nav entry to add, under the "Maintainers" audience)docker-compose.yml(ams-observabilityprofile,ams-reporting-exporterservice)packages/loopover-miner/docker-compose.miner.yml(Adddocker-compose.miner.ymlfor AMS fleet mode with named services and restart policy #5177)packages/loopover-miner/DEPLOYMENT.md(package-internal reference, not the target for this issue)