Get started

Install & first scan

Install the launcher with one command, pick an edition, and run your first static scan. Static analysis is free under the Community edition — no account required — so you can be reading findings from a real APK within a minute of installing.

Install the launcher

One command downloads and installs rutken-launcher into ~/.local/bin — per-user, no sudo, no build, no repository checkout:

curl -fsSL https://www.rutken.com/install.sh | bash

The installer is security-conscious by design. It fetches the launcher binary along with a SHA-256 sidecar and an Ed25519 signature, verifies the SHA-256 (a cheap transit-corruption check) and then verifies the signature against a release public key pinned inside the install script itself — not a key fetched from storage. Both checks fail closed: openssl is a hard dependency and a failed signature aborts the install. The script also wires ~/.local/bin onto your PATH if it isn't already.

Platform. The launcher and CLI install on Linux x86_64 today; Windows and macOS installers are deferred. (This is about where the tool runs — the analysis engine targets Android, Linux, containers, CI/CD, and Windows binaries regardless of host.)

Why a launcher rather than a plain binary? rutken itself is a persistent alias the launcher owns and repoints at whichever edition you installed most recently. The launcher also handles update checks and entitlement refresh, so you install once and never re-run the script by hand.

Pick an edition

On first run the launcher asks which edition to provision. Community is free and needs no account. To provision it immediately and non-interactively, pass --community straight through the installer:

curl -fsSL https://www.rutken.com/install.sh | bash -s -- --community

Or run the launcher yourself after installing:

rutken-launcher --community --yes

Once an edition is provisioned, rutken is on your PATH. For a paid edition, run rutken-launcher without --community and sign in when prompted.

What each edition is for

  • Community (free). The complete static analysis pipeline (parse / IR / CFG / rules / data-flow / taint), software composition analysis with CVE matching, and a taste of dynamic analysis: live traffic capture and TLS unpin driven by a bundled Frida gadget.
  • Paid editions. Build outward from that floor: Rutken's own bespoke no-repack hooking engine (no Frida fingerprints), active runtime intervention, automation (CI gating, the REST API, the MCP server), and team / enterprise deployment. The pricing page has the current plans; the Platforms & operations guide covers what each capability does.

Capability names in this documentation are marked where a feature is paid-tier or platform-specific. Static analysis and SCA are never gated.

The command model

Rutken's CLI has two invocation shapes, and knowing which is which saves confusion:

  • Target-form: rutken <target> <verb> [flags]. The target (an APK, ELF, PE, Mach-O, or iOS bundle) comes first, then the verb. This is how you scan and inspect a file: rutken app.apk rules, rutken app.apk info.
  • Keyword-form: rutken <keyword> ... for commands that don't operate on a single file — rutken devices, rutken update, rutken packs list, rutken image scan ....

There is no rutken scan. Scanning an APK is rutken <apk> rules — rules is the primary static-analysis (SAST) verb. The full surface is in the CLI reference, and every verb accepts --help.

Your first scan

Point rules at any APK:

rutken app.apk rules

This runs the full static pipeline — decode, build the IR and control-flow graphs, run the rule set (including CFG-aware and data-flow/taint checks) — and prints findings to the terminal, ranked by severity. By default it reports everything from low severity up.

Narrow the output, or emit a machine-readable report:

# Only medium severity and above
rutken app.apk rules --min-severity medium

# JSON for another tool, or SARIF for a code-scanning dashboard
rutken app.apk rules --format json
rutken app.apk rules --format sarif --out findings.sarif

See exactly which rules exist (optionally filtered by platform) without running a scan:

rutken app.apk rules --list-rules
rutken app.apk rules --list-rules --platform android

A few more verbs

The verbs you'll reach for next, all target-form:

rutken app.apk info        # analysis summary and metadata
rutken app.apk manifest    # human-readable AndroidManifest view
rutken app.apk sca         # software composition analysis (libraries, CVEs)
rutken app.apk concepts    # where security concepts appear in this app

sca fingerprints bundled libraries and native code against a known-component dataset and matches against CVEs; concepts is a navigation layer that points you at where a given security concept lives in the app. The Static analysis guide covers all of these in depth.

The desktop GUI

Prefer a visual workflow? The desktop GUI is a separate binary, rutken-gui, that browses the class tree, control-flow graphs, and findings side by side. Open an APK directly:

RUTKEN_GUI_OPEN=path/to/app.apk rutken-gui

There is no rutken tui / rutken gui subcommand — the GUI is its own executable.

Updating

The launcher polls for new builds and tells you when one is available. To update immediately:

rutken update

This applies the latest build for your installed edition and re-validates your entitlement, so you don't need to re-run the install script or sign in again unless your session has expired.