Rust CLIMITv0.4.0

Scan a Tauri app without running it.

source-map-tauri statically scans a Tauri repository and writes Meilisearch-ready NDJSON for artifacts, edges, warnings, and project metadata.

frontend_http_flow

  1. frontend_component

    LoginModal

    src/components/extra/LoginModal.tsx

  2. frontend_api_wrapper

    useLogin

    src/utils/apis/auth.ts

  3. frontend_transport

    usePostApi

    src/utils/apis/api.ts

  4. frontend_http_endpoint

    POST /auth/login

    /auth/login

One flow from the README: LoginModal -> useLogin -> usePostApi -> POST /auth/login.
brew tap dickwu/tap
brew install source-map-tauri

The project README installs it with these two commands. Version 0.4.0, released 17 April 2026.

What scan writes

A scan bundle is six files. Meilisearch settings and project metadata are in the bundle so it can be uploaded or reindexed.

artifacts.ndjson
Extracted documents. Every artifact includes id, repo, kind, risk_level, contains_phi, has_related_tests, and related_tests.
edges.ndjson
Relationships between documents.
warnings.ndjson
Warning documents. When the code is ambiguous, the scanner writes one instead of silently skipping it.
summary.json
Scan summary.
project-info.json
Project metadata.
meili-settings.json
Meilisearch settings for upload or reindex.

Relationships it keeps

The scan extracts frontend components, hooks, tests, Tauri commands, plugin metadata, permissions, and capability documents. It also extracts frontend HTTP wrappers, transports, endpoints, and canonical endpoint flows. Redaction, PHI detection, and risk tagging run before documents are written.

Commands

The quick start order from the project README. Global flags are --strict, --verbose, --quiet, --redact-secrets, --detect-phi, and --fail-on-phi. --redact-secrets and --detect-phi are on by default. --fail-on-phi is off by default.

  1. Init

    Creates .repo-search/tauri/source-map-tauri.toml, .repo-search/tauri/.gitignore, and ~/.config/meilisearch/connect.json with placeholder values if that file does not already exist.

    source-map-tauri init --root /path/to/tauri-app
  2. Doctor

    Reports whether the repo looks like a Tauri app, how many frontend, capability, and permission files were found, and whether Vite sourcemaps appear configurable.

    source-map-tauri doctor --root /path/to/tauri-app --repo my-tauri-app
  3. Scan

    Writes the bundle under --out. The walk skips .git, node_modules, target, dist, build, vendor, coverage, logs, tmp, and storage. Pass --include-node-modules, --include-target, --include-dist, or --include-vendor to bring those directories back in.

    source-map-tauri scan --root /path/to/tauri-app --repo my-tauri-app --out /tmp/source-map-tauri
  4. Validate

    Checks bundle structure, document ids, and command-to-permission evidence. Validation fails if a document id is not Meilisearch-safe.

    source-map-tauri validate --input /tmp/source-map-tauri
  5. Upload

    Sends the bundle to Meilisearch. Connection resolution order: --meili-url / --meili-key, then MEILI_HOST, MEILI_MASTER_KEY, and MEILI_SEARCH_KEY, then ~/.config/meilisearch/connect.json, then the default http://127.0.0.1:7700 host in config. Meilisearch is used for upload, reindex, search, and the Meili health checks in doctor.

    source-map-tauri upload \
      --input /tmp/source-map-tauri/artifacts.ndjson \
      --edges /tmp/source-map-tauri/edges.ndjson \
      --warnings /tmp/source-map-tauri/warnings.ndjson \
      --wait
  6. Reindex

    Scans again and uploads in one step.

    source-map-tauri reindex --root /path/to/tauri-app --repo my-tauri-app --wait
  7. Search

    Endpoint-shaped queries are normalized and filtered to frontend_http_flow. auth/login resolves to /auth/login. A suffix such as /home/search can resolve to /appointment/home/search when that suffix is stored as a path alias. The query returns one canonical flow document per repo. Extra callsites collapse into caller_count, alternate_components, and source_paths. A /home/search query can return PatientSearchContent -> useSearchPatientMutation -> usePostMutation -> POST /appointment/home/search.

  8. Print schema

    Prints JSON schema hints for an artifact, an edge, or a warning.

    source-map-tauri print-schema --kind artifact
    source-map-tauri print-schema --kind edge
    source-map-tauri print-schema --kind warning
  9. Trace

    Verifies the bundle path and preserves the command surface. Deeper sourcemap frame tracing is still being filled in.

    source-map-tauri trace --root /path/to/tauri-app --bundle dist/app.js --line 120 --column 4

Install

Build requirements are a Rust toolchain and a Tauri repository to scan. Meilisearch is required only for upload, reindex, search, or Meili health checks in doctor. Current CI runs on Linux and macOS.

Homebrew

The formula source-map-tauri.rb installs the v0.4.0 release binary for the host it matches.

brew tap dickwu/tap
brew install source-map-tauri

crates.io

cargo install source-map-tauri

From source

git clone git@github.com:dickwu/source-map-tauri.git
cd source-map-tauri
cargo build --release

The binary is at ./target/release/source-map-tauri.

Still being hardened

The project README names what is still being hardened:

Questions

What does source-map-tauri do?

It statically scans a Tauri application and writes Meilisearch-ready NDJSON for artifacts, edges, warnings, and project metadata. The scan walks frontend code, Rust commands, plugin permissions, capabilities, sourcemap metadata, and tests, and it does not execute the target application.

How do I install it with Homebrew?

Run brew tap dickwu/tap, then brew install source-map-tauri. Version 0.4.0 of the formula installs a prebuilt binary for macOS Apple Silicon, macOS Intel, or Linux x86_64.

Does the scan run the Tauri app?

No. source-map-tauri is static analysis only. It does not execute the target application.

Which files does a scan write?

A scan writes artifacts.ndjson, edges.ndjson, warnings.ndjson, summary.json, project-info.json, and meili-settings.json.

How are frontend HTTP endpoints searched?

Endpoint-shaped queries are normalized and filtered to frontend_http_flow. An exact path such as auth/login resolves to /auth/login. A suffix such as /home/search can resolve to a longer canonical endpoint such as /appointment/home/search when that suffix is stored as a path alias. The result is one canonical flow document per repo. Extra callsites are collapsed into caller_count, alternate_components, and source_paths.

Where are Meilisearch credentials read from?

Upload resolves the connection in this order: the --meili-url and --meili-key flags, then MEILI_HOST, MEILI_MASTER_KEY, and MEILI_SEARCH_KEY, then ~/.config/meilisearch/connect.json, then the default http://127.0.0.1:7700 host in config. Meilisearch is used for upload, reindex, search, and the Meili health checks in doctor.

What does trace return today?

trace verifies the bundle path and preserves the command surface while deeper sourcemap frame tracing is still being filled in. The documented command is source-map-tauri trace --root /path/to/tauri-app --bundle dist/app.js --line 120 --column 4.

What happens when a scan is ambiguous?

When the code is ambiguous, source-map-tauri emits a warning document instead of silently skipping it.

Is source-map-tauri free and open source?

Yes. source-map-tauri is MIT licensed. The source repository and the formula homepage are https://github.com/dickwu/source-map-tauri. Crate docs are at https://docs.rs/source-map-tauri.