mirror of
https://github.com/Such-Software/adaptive-multi-protocol-browser.git
synced 2026-10-17 14:31:46 +02:00
86 lines
3.5 KiB
Markdown
86 lines
3.5 KiB
Markdown
# Adaptive Multi-Protocol Browser
|
|
|
|
> Status: draft | Updated 2026-07-07 | Applies to: AMPB contributors and operators
|
|
|
|
Adaptive Multi-Protocol Browser, or AMPB, is a transport-aware browser shell. It routes
|
|
URLs to the right network, adopts transports that are already healthy, and manages missing
|
|
transports when configured to do so.
|
|
|
|
AMPB should ship its own browser runtime. Desktop targets a bundled Firefox/Gecko-lineage
|
|
app, Android targets bundled GeckoView/Fenix/Tor Browser Android-lineage code, and iOS
|
|
uses an AMPB-owned shell with platform browser-engine constraints.
|
|
|
|
The first fixture is Wownero across clearnet, Tor, I2P, Gemini, and Reticulum-oriented
|
|
targets generated by AMPG. Interactive fixtures include `ai-gen-bot` and the Medusa
|
|
multi-tenant platform.
|
|
|
|
## Goals
|
|
|
|
- Route URLs by protocol and address family.
|
|
- Adopt existing Tor, I2P, Reticulum, and Gemini-capable tools when healthy.
|
|
- Prompt on first visit before installing or starting a missing transport.
|
|
- Manage approved transports through isolated AMPB state.
|
|
- Keep browser profiles isolated by transport.
|
|
- Present transport health in plain language.
|
|
|
|
## Non-goals
|
|
|
|
- Forking a browser engine before the orchestration model is proven.
|
|
- Mixing clearnet, Tor, I2P, and Reticulum cookies/storage in one profile.
|
|
- Publishing private transport state, keys, or host inventory in public docs.
|
|
|
|
## Local Commands
|
|
|
|
```sh
|
|
python3 -m ampbrowser route https://wownero.org/
|
|
python3 -m ampbrowser route http://example.b32.i2p/
|
|
python3 -m ampbrowser route gemini://wownero.org/
|
|
python3 -m ampbrowser route ipfs://bafyexample/
|
|
python3 -m ampbrowser inspect
|
|
python3 -m ampbrowser plan gemini://wownero.org/
|
|
python3 -m ampbrowser open https://wownero.org/
|
|
python3 -m ampbrowser open http://example.onion/ --launch
|
|
python3 -m ampbrowser open http://example.onion/ --yes --launch
|
|
python3 -m ampbrowser shell http://example.onion/
|
|
python3 -m ampbrowser shell http://example.onion/ --yes
|
|
python3 -m ampbrowser open http://example.b32.i2p/ --yes
|
|
python3 -m ampbrowser open http://example.b32.i2p/ --yes --launch
|
|
python3 -m ampbrowser transport start tor
|
|
python3 -m ampbrowser transport start i2p
|
|
python3 -m ampbrowser transport status tor
|
|
python3 -m ampbrowser transport status i2p
|
|
python3 -m ampbrowser transport stop tor
|
|
python3 -m ampbrowser transport stop i2p
|
|
python3 -m ampbrowser open http://example.b32.i2p/ --config examples/config.toml
|
|
python3 -m ampbrowser open http://example.b32.i2p/ --platform android
|
|
python3 -m ampbrowser fixture check ../adaptive-multi-protocol-gateway/dist/wownero/ampg-fixture-manifest.json
|
|
python3 -m ampbrowser docs generate
|
|
python3 -m ampbrowser docs generate --check
|
|
python3 tools/docs_check.py
|
|
python3 -m unittest discover -s tests
|
|
```
|
|
|
|
## Documentation
|
|
|
|
- [Architecture](docs/architecture.md)
|
|
- [Browser builds](docs/browser-builds.md)
|
|
- [Candidate transports](docs/candidate-transports.md)
|
|
- [Configuration](docs/configuration.md)
|
|
- [Desktop vertical](docs/desktop-vertical.md)
|
|
- [Fixture manifests](docs/fixture-manifests.md)
|
|
- [Mobile browser](docs/mobile-browser.md)
|
|
- [Open flow](docs/open-flow.md)
|
|
- [Transport management](docs/transport-management.md)
|
|
- [Test fixtures](docs/test-fixtures.md)
|
|
- [Autodocs and drift gates](docs/autodocs.md)
|
|
- [Generated browser strategy](docs/generated/browser-strategy.md)
|
|
|
|
## Reusable checklist
|
|
|
|
- [ ] Route URL to transport.
|
|
- [ ] Inspect whether transport can be adopted.
|
|
- [ ] Prompt before installing or starting a missing transport.
|
|
- [ ] Use isolated profile state for each transport.
|
|
- [ ] Spawn/manage only after a dry-run plan.
|
|
- [ ] Keep private notes under `docs/private/`.
|