···11# atproto-devtool
2233-A developer tool for the [atproto](https://atproto.com/) ecosystem. The first
44-command it ships with is `test labeler`, which runs a conformance suite against
55-an atproto labeler and reports pass/fail results for identity resolution, HTTP
66-endpoints, the subscription firehose, and label signature cryptography.
33+A multitool for the [atproto](https://atproto.com/) developer ecosystem.
7485## Installation
961010-From a checkout of this repository:
77+| Environment | CLI command |
88+|-------------|-------------|
99+| Cargo (Rust 1.85+) | `cargo install --path .` |
11101212-```bash
1313-cargo install --path .
1414-```
1111+## Usage
15121616-## `test labeler`
1313+### `test labeler`
17141818-Run the labeler conformance suite against a labeler. The suite runs four stages
1919-in order — identity, HTTP, subscription, and crypto — and produces a structured
2020-report with per-check results plus a summary exit code.
1515+Runs a conformance suite against a labeler, and produces a structured report
1616+with per-check results plus a summary exit code. The suite has four stages:
1717+1818+- **Identity**: DID document contains the correct entries, and the labeler's PDS
1919+ holds a valid labeler record.
2020+- **HTTP**: Checks the `com.atproto.label.queryLabels` XRPC API.
2121+- **Subscription**: Checks the `com.atproto.label.subscribeLabels` WebSocket.
2222+- **Crypto**: Samples labels and verifies their signatures.
21232224```text
2325Run the labeler conformance suite against an atproto labeler
···5052 Print help (see a summary with '-h')
5153```
52545353-### Examples
5555+#### Examples
54565557Resolve by handle:
5658···7678fetches, per-label verification). `NO_COLOR=1` or `--no-color` disables ANSI
7779escape sequences in the rendered report.
78807979-### Exit codes
8181+#### Exit codes
80828183- `0` — all spec-required checks passed (advisories and skipped checks are
8284 allowed).
8385- `1` — one or more spec-required checks failed.
8686+- `2` — no spec-required checks failed but one or more network errors occurred.
8787+8888+## License
8989+9090+Licensed under either of
9191+9292+ * Apache License, Version 2.0, ([LICENSE-APACHE](LICENSE-APACHE) or
9393+ http://www.apache.org/licenses/LICENSE-2.0)
9494+ * MIT license ([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT)
9595+9696+at your option.
9797+9898+### Contribution
9999+100100+Unless you explicitly state otherwise, any contribution intentionally
101101+submitted for inclusion in the work by you, as defined in the Apache-2.0
102102+license, shall be dual licensed as above, without any additional terms or
103103+conditions.