SuperAPI AI Directory

snap-o-network-inspector

Testing & quality

View repository

Updated 10-16 03:05

About this skill

Snap-O Network Tool

Use this skill to inspect network traffic or override API responses in an Android app.

CLI Path

Use the Network CLI bundled with the Snap-O plugin:

SNAPO_BIN=/path/to/snap-o/skills/snap-o-network-inspector/scripts/snapo-network

Resolve scripts/snapo-network relative to the directory containing this SKILL.md; do not assume the current working directory. The script requires Python 3 and Android Platform Tools; no Python packages, compiler toolchain, or macOS application are required.

The script resolves adb from PATH, ANDROID_SDK_ROOT, or ANDROID_HOME. Use --adb <path> or SNAPO_ADB to select a specific ADB executable or wrapper. Wrappers selecting a remote ADB server must tunnel Snap-O forwards back to localhost; otherwise, pass both --adb-host and --adb-port.

Listings use ADB process and package information without contacting the app. JSON rows contain pid, processName, and packageName; unresolved identity fields are null. Friendly app labels and icons are not loaded.

Current Command Surface

  • snapo-network list: lists available Snap-O Network Tool servers.
  • snapo-network requests: emits CDP network events for a server.
  • snapo-network show: shows full details for a request id, including headers and bodies.
  • snapo-network intercept <file.py>: runs Python route handlers to edit or mock HTTP responses; requires Snap-O OkHttp interception support in the app.

Useful global selectors:

  • -s, --serial: use a specific device serial.
  • -d: use the single connected USB device.
  • -e: use the single connected emulator.
  • --adb: use a specific ADB executable or wrapper.
  • --adb-host, --adb-port: connect directly to an explicit remote ADB server; otherwise the configured ADB command selects its endpoint.

Inspection Flow

  1. List available servers.
"$SNAPO_BIN" list --json

For a remote ADB endpoint, append --adb-host <host> --adb-port <port> to list, requests, show, or intercept; the script uses the ADB server directly. Otherwise, its localhost forward is removed automatically when the command exits.

Use --no-app-info to skip package and process lookup.

  1. Pick a target serial and socket. If multiple devices or sockets are available, select them explicitly.

  2. Pull captured events.

"$SNAPO_BIN" requests -s <serial> -n <socket_name> --filter '<url-filter>' --no-stream --json

--filter uses the same case-insensitive URL syntax as the Network Tool search bar. Separate terms must all match, a term prefixed with - is excluded, and quotes or backslashes can escape whitespace.

snapo-network requests replaces request Authorization and Cookie values and response Set-Cookie values with [REDACTED].

  1. Inspect one request deeply when full request or response details are required.
"$SNAPO_BIN" show -s <serial> -n <socket_name> -r <request_id> --json

This output can contain URL query values and request or response bodies.

  1. Re-check command help if output differs.
"$SNAPO_BIN" --help
"$SNAPO_BIN" list --help
"$SNAPO_BIN" requests --help
"$SNAPO_BIN" show --help
"$SNAPO_BIN" intercept --help

Output Notes

  • --json emits NDJSON, so process it line by line.
  • snapo-network requests emits Chrome DevTools Protocol-style records with top-level method and params fields.
  • Use --no-stream for a one-shot buffered snapshot.
  • snapo-network intercept writes runner logs to stderr and does not accept --json, --filter, or --no-stream.
  • Network protocol 2 uses a tool-owned /network/protocol version check, HTTP history and body reads, and SSE for live events. Interception registers routes with a POST that returns its own SSE connection. The CLI requires an updated Android Network library.