A service for analyzing iOS and Android apps.
git clone https://github.com/getsentry/launchpad.git
cd launchpad
direnv allow
devenv sync (or just uv sync then ./scripts/deps)
If you don't have devenv installed, follow these instructions.
Launchpad runs as a TaskWorker that receives work via the TaskBroker RPC interface. Requires LAUNCHPAD_WORKER_RPC_HOST and LAUNCHPAD_WORKER_CONCURRENCY environment variables (already configured in .envrc).
The TaskBroker handles task distribution and dispatches work to the worker via RPC. A single worker instance processes tasks in parallel — LAUNCHPAD_WORKER_CONCURRENCY controls how many child processes run simultaneously (e.g., 16 means up to 16 artifacts processed in parallel).
make worker
# or: launchpad worker -v
Alternatively for a one-off analysis, such as a local size analysis, you can invoke our various CLI subcommands.
# iOS analysis
launchpad size path/to/app.xcarchive.zip
# Android analysis (AAB preferred)
launchpad size path/to/app.aab
launchpad size path/to/zipped_aab.zip
launchpad size path/to/app.apk
# Skip time-consuming analysis for faster results
launchpad size path/to/app.xcarchive.zip --skip-swift-metadata --skip-symbols
# Custom output location
launchpad size path/to/app.xcarchive.zip -o my-report.json
launchpad size app.apk -o detailed-report.json
See launchpad size --help for all options:
$ launchpad size --help
Usage: launchpad size [OPTIONS] INPUT_PATH
Analyze provided artifact and generate a size report.
Options:
-o, --output FILENAME Output path for the analysis. [default: -]
-v, --verbose Enable verbose logging output.
-q, --quiet Suppress all output except errors.
--format [json|table] Output format for results. [default: json]
--working-dir PATH Working directory for temporary files (default:
system temp).
--skip-swift-metadata Skip Swift metadata parsing for faster analysis.
--skip-symbols Skip symbol extraction and analysis.
--skip-component-analysis Skip detailed binary component analysis for
faster processing.
--skip-treemap Skip treemap generation for hierarchical size
analysis.
--help Show this message and exit.
For full end-to-end development alongside the Sentry monolith, first run sentry in one terminal:
devenv sync
devservices up --mode ingest
devservices serve --workers
Next run launchpad in another terminal:
make worker
And finally use the sentry-cli (version 3.0.1 or higher) to upload to your local machine:
sentry-cli --log-level DEBUG \
--url http://dev.getsentry.net:8000/ \
--auth-token $SENTRY_TOKEN \
build upload YourBuild.xcarchive \
--org sentry \
--project internal
# All tests (unit + integration)
make test
# Unit tests only
make test-unit
# Integration tests only
make test-integration
# Run all quality checks (check-format + check-lint + check-types)
make check
# Autofix as many checks as possible.
make fix
# Full CI pipeline
make ci
See License for information about Sentry's licensing.
This project also uses compiled binaries for strip and ld. The source code of these is available at https://github.com/tpoechtrager/cctools-port and falls under the Apple Public Source License Version 2.0.
This project uses FFmpeg for audio and video processing. FFmpeg is licensed under the LGPL v2.1+ license. We do not distribute or modify FFmpeg; it is installed as a system dependency via package managers. For more information about FFmpeg licensing, see https://ffmpeg.org/legal.html.
Hacker News (1)
Python
93.1%
TypeScript
5.3%
A service for analyzing iOS and Android apps.
git clone https://github.com/getsentry/launchpad.git
cd launchpad
direnv allow
devenv sync (or just uv sync then ./scripts/deps)
If you don't have devenv installed, follow these instructions.
Launchpad runs as a TaskWorker that receives work via the TaskBroker RPC interface. Requires LAUNCHPAD_WORKER_RPC_HOST and LAUNCHPAD_WORKER_CONCURRENCY environment variables (already configured in .envrc).
The TaskBroker handles task distribution and dispatches work to the worker via RPC. A single worker instance processes tasks in parallel — LAUNCHPAD_WORKER_CONCURRENCY controls how many child processes run simultaneously (e.g., 16 means up to 16 artifacts processed in parallel).
make worker
# or: launchpad worker -v
Alternatively for a one-off analysis, such as a local size analysis, you can invoke our various CLI subcommands.
# iOS analysis
launchpad size path/to/app.xcarchive.zip
# Android analysis (AAB preferred)
launchpad size path/to/app.aab
launchpad size path/to/zipped_aab.zip
launchpad size path/to/app.apk
# Skip time-consuming analysis for faster results
launchpad size path/to/app.xcarchive.zip --skip-swift-metadata --skip-symbols
# Custom output location
launchpad size path/to/app.xcarchive.zip -o my-report.json
launchpad size app.apk -o detailed-report.json
See launchpad size --help for all options:
$ launchpad size --help
Usage: launchpad size [OPTIONS] INPUT_PATH
Analyze provided artifact and generate a size report.
Options:
-o, --output FILENAME Output path for the analysis. [default: -]
-v, --verbose Enable verbose logging output.
-q, --quiet Suppress all output except errors.
--format [json|table] Output format for results. [default: json]
--working-dir PATH Working directory for temporary files (default:
system temp).
--skip-swift-metadata Skip Swift metadata parsing for faster analysis.
--skip-symbols Skip symbol extraction and analysis.
--skip-component-analysis Skip detailed binary component analysis for
faster processing.
--skip-treemap Skip treemap generation for hierarchical size
analysis.
--help Show this message and exit.
For full end-to-end development alongside the Sentry monolith, first run sentry in one terminal:
devenv sync
devservices up --mode ingest
devservices serve --workers
Next run launchpad in another terminal:
make worker
And finally use the sentry-cli (version 3.0.1 or higher) to upload to your local machine:
sentry-cli --log-level DEBUG \
--url http://dev.getsentry.net:8000/ \
--auth-token $SENTRY_TOKEN \
build upload YourBuild.xcarchive \
--org sentry \
--project internal
# All tests (unit + integration)
make test
# Unit tests only
make test-unit
# Integration tests only
make test-integration
# Run all quality checks (check-format + check-lint + check-types)
make check
# Autofix as many checks as possible.
make fix
# Full CI pipeline
make ci
See License for information about Sentry's licensing.
This project also uses compiled binaries for strip and ld. The source code of these is available at https://github.com/tpoechtrager/cctools-port and falls under the Apple Public Source License Version 2.0.
This project uses FFmpeg for audio and video processing. FFmpeg is licensed under the LGPL v2.1+ license. We do not distribute or modify FFmpeg; it is installed as a system dependency via package managers. For more information about FFmpeg licensing, see https://ffmpeg.org/legal.html.
Hacker News (1)
Python
93.1%
TypeScript
5.3%