MobARK is a security research platform for Android and iOS apps.
929
Self-hosted mobile application security testing — static analysis + AI agent for Android & iOS.
MobARK decompiles an APK or IPA, runs static analysis (jadx / apktool / Semgrep / Gitleaks / LIEF), scores findings with a plain severity-based risk index (high | warning | info), and gives you an AI agent that can chat with the decompiled code — all through your own local LLM (Ollama / LM Studio), with nothing leaving your infrastructure by default.
Source: github.com/suwasto/MobARK · Docs: suwasto.github.io/MobARK · License: Apache-2.0
suwasto/mobark:0.1.0suwasto/mobark:latestPlatform note: images in v0.1.0 are linux/amd64 only — the analysis toolchain (jadx/apktool/Semgrep etc.) is x86_64-only. See RELEASING.md before running on an arm64 host.
Scan uploads are RQ jobs that need Redis and a worker process, so pulling just the app image alone won't run real scans. Use Docker Compose to bring up the whole stack (app + worker + Redis + SearXNG):
curl -O https://raw.githubusercontent.com/suwasto/MobARK/main/docker-compose.yml
curl -O https://raw.githubusercontent.com/suwasto/MobARK/main/.env.example
mv .env.example .env
docker compose pull # suwasto/mobark:0.1.0 + redis + searxng
docker compose up
Open http://localhost:8000.
To pin a specific release instead of the default, set MOBARK_IMAGE_TAG=<version> in .env.
Auth is on by default — a fresh install lands on the register/login screen. There are no seeded accounts: the first account you register becomes the instance admin, and every account after that is a regular user who only sees their own scans. The first account also claims any unowned scans (e.g. data scanned while auth was off, or via the CLI without --user).
⚠️ Never expose an install using example/default passwords to a network. Use a real, unique password on any install that's reachable outside your own machine.
To skip auth entirely for local dev/CI, set MOBARK_AUTH_ENABLED=0 in .env.
| Variable | Purpose |
|---|---|
MOBARK_DATABASE_URL | SQLite connection string, e.g. sqlite:////data/mobark.db |
MOBARK_DATA_DIR | Where uploads, scan artifacts, and per-user data live |
MOBARK_OLLAMA_BASE_URL | Point at an Ollama instance running on the host |
MOBARK_AUTH_ENABLED | Set to 0 to disable auth (dev/CI only) |
MOBARK_IMAGE_TAG | Pin a specific release when using the Compose stack |
Full configuration reference: Quickstart docs
Volumes: mobark-data:/data — keeps the SQLite database and uploads across container recreates. Drop -v for a throwaway run.
Ports: 8000 (HTTP)
docker compose on infrastructure you controlOne Compose stack: a FastAPI backend, an RQ worker, Redis (job queue), and a bundled SearXNG instance, sharing a SQLite database and a data directory. The React SPA is served from the same FastAPI origin.
/api/v1 route except health and auth sits behind a session cookie, with per-user isolation resolved structurally from the request contextFull module map and component diagram: ARCHITECTURE.md
Apache-2.0. GPL/LGPL tools in the stack (Semgrep, SearXNG) run subprocess-only or as separate containers — every directly imported library is permissive. Full dependency license audit: site licenses page.
Content type
Image
Digest
sha256:8ccea5149…
Size
507 MB
Last updated
2 months ago
docker pull suwasto/mobark