Files
echolot/README.md
T
mrambossekandClaude Opus 5 d3e35ecead Add branding: Focus mark, wordmark, banner, social preview
- assets/branding/: icon (SVG + 512px PNG for Gitea avatar), adaptive-icon
  foreground/background layers, path-only wordmark for dark/light grounds,
  1200x300 README banner, 1280x640 social preview (SVG + PNG)
- README: banner hero
- build-status: branding decision log (includes the pending website section
  from the parallel web/ session, interleaved in the same file)

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-07-30 10:52:12 +02:00

68 lines
2.8 KiB
Markdown

<p align="center">
<img src="assets/branding/banner.svg" alt="echolot — measure, don't guess" width="100%">
</p>
# Echolot
Free software for detecting and debugging **local network issues** from an Android phone —
built for people who actually know what a neighbor table is.
Most "wifi analyzer" apps show you signal bars. Echolot aims at the layer where home and office
networks actually break: duplicate DHCP servers, broken IPv6 RAs, MTU black holes, NAT64 weirdness,
multicast that dies at the AP, DNS that answers differently than it should. It records what it
observed, separates observation from interpretation, and exports the whole run so you can argue
with it later.
**Status: pre-release.** The capability prober runs on real hardware; the production app and the
probe server are not built yet.
## Repository layout
```
docs/ design docs — the contract for everything below
echolot-prober/ capability prober: validates the no-root feasibility matrix on real devices
```
The Go probe server and the production app land here as siblings.
## Design docs
The three specs are draft-complete and reviewed; treat them as the contract.
| Doc | What it defines |
|---|---|
| [docs/feature-catalog-and-feasibility.md](docs/feature-catalog-and-feasibility.md) | Full feature list + the no-root feasibility matrix |
| [docs/measurement-schema.md](docs/measurement-schema.md) | Archived/exportable measurement JSON (observation vs finding, two-clock rule, anonymization) |
| [docs/probe-protocol.md](docs/probe-protocol.md) | Client↔server wire protocol (pinned TLS control plane, binary UDP data plane, STUN, canary DNS) |
| [docs/build-status.md](docs/build-status.md) | Running log of decisions and next steps |
## Privilege tiers
Every result records which tier produced it:
- **`app`** — no root, no special setup. The bulk of the functionality.
- **`shizuku`** — ADB-shell privileges via wireless pairing, no root. Shipped in v1.
- **`root`** — future optional module.
## Licensing
| Part | License | Why |
|---|---|---|
| All code (app, prober, server) | **GPL-3.0-or-later** | The value here is the platform-API research; copyleft keeps derivative apps free |
| `docs/` (the specs) | **CC-BY-4.0** | A wire protocol and a measurement format should be implementable by anyone, without license anxiety |
Full texts: [LICENSE](LICENSE) (GPLv3) and [docs/LICENSE](docs/LICENSE) (CC BY 4.0).
Sources carry `SPDX-License-Identifier` headers.
If you want to build a compatible server or client, the protocol and schema docs are deliberately
permissive — go ahead.
## Building
See [echolot-prober/README.md](echolot-prober/README.md). Short version, from `echolot-prober/`:
```sh
echo "sdk.dir=/path/to/Android/sdk" > local.properties
./gradlew :app:assembleDebug
```