Skip to main content

Mini Atlas Graph app

Single-user, loopback-bound, pip-installed Graph app. The console script is mini-atlas-graph. Node, Docker, and Vite are not required at runtime.

Install and launch

Use a dedicated virtualenv. mini-atlas-graph-app 0.1.4 and the three library distributions it depends on are on PyPI. .github/workflows/pypi-publish.yml is the publisher; ordinary pushes and pull requests do not upload.

python3 -m venv .venv
source .venv/bin/activate
pip install mini-atlas-graph-app==0.1.4

Local wheel files can still be installed if you have them:

pip install mini_atlas_graph_etl-*.whl mini_atlas_graph_warehouse-*.whl mini_atlas_graph_ingestor-*.whl
pip install mini_atlas_graph_app-0.1.4-py3-none-any.whl

Launch from a working directory that is not a source checkout, with an empty PYTHONPATH, so imports resolve from site-packages:

unset PYTHONPATH
mini-atlas-graph serve --data-dir /path/to/data

serve binds to loopback (127.0.0.1:8765 by default) and prints a launch URL whose token lives in the URL fragment. The bundled UI exchanges that token once at POST /api/v1/session for an HttpOnly; SameSite=Strict session cookie. API routes under /api/v1 require that cookie. By default serve opens the system browser with that launch URL. Use --no-browser when you will paste the URL yourself.

Other commands:

mini-atlas-graph url --data-dir /path/to/data
mini-atlas-graph doctor --data-dir /path/to/data
mini-atlas-graph backup --data-dir /path/to/data --out backup.zip
mini-atlas-graph restore backup.zip --data-dir /path/to/empty

--data-dir holds app metadata (config.toml, metadata.sqlite, recipes, managed mapping/Avro files, jobs, uploads). The first serve against an empty directory creates inputs/, warehouses/, and exports/ there and writes them into input_roots, warehouse_roots, and export_roots. Authorize additional folders in Settings → Locations, then restart. YAML/CSV/SQL sources must live under an input root; DuckDB warehouses under a warehouse root; export destinations under an export root.

Optional extras and ODBC

Core install covers local CSV, SQLite, and local DuckDB SQL. Optional extras in pyproject.toml are leftover names, not the R1 source set:

Extra What it installs What it does not prove
[odbc] pyodbc An OS driver, a DSN, or a live SQL Server / BigQuery session
[postgres] psycopg PostgreSQL is not an R1 source
[oracle] oracledb Oracle is not an R1 source

SQL Server and BigQuery connection shapes exist. Live corporate authentication is unverified. Importable pyodbc is not an OS driver. Expired GCP auth for BigQuery is handled outside this app; there is no in-app Google login.

Backup exclusions

backup writes metadata.sqlite (SQLite backup API), recipes/, managed/ mapping and Avro files, and config.toml. Pass --include-artifacts to add jobs/, runs/, exports/, uploads/, imports/, and logs/. Never copied: warehouse DuckDB files, operator Python modules, host CSVs under input_roots, instance.lock, runtime.json, and launch tokens. Restore only into a new or empty directory; then launch that directory. Host source files used by recipes must still be reachable under the restored app's input_roots.

Trusted operator bindings

CSV wizard names can select callables from a trusted operator-bindings module listed in Settings. The browser cannot upload Python. Changing or deleting that module fails the next run explicitly. Treat the module path as operator-controlled code, not an app sandbox.

Resume is a Run History action on an interrupted run. GraphETL validates saved progress when Resume starts and may replay work since the last completed round. A checkpoint filename is not a restored graph.

HTTP API contract (F-A4)

schema/api-v1.json is the existing JSON Schema 2020-12 contract generated from mini_atlas_graph_app/contracts/models.py. It names 21 HTTP operations and their request/response models. It is not an OpenAPI paths document and does not enumerate the 103 Flask handlers.

Those models cover the F-06 / J1 graphs + jobs + connections subset listed in SCHEMA_COVERAGE. They do not include slice preview or exports — those routes exist and are implemented but unmodeled. See docs/SCHEMA_OMISSIONS.md for the split between implemented-but-unmodeled routes and names that were never implemented. GET /graphs/{id}/activity and ingest-history HTTP routes do not exist.

npm run check:api-types in the webapp checks the generated TypeScript client against that pinned subset. Additional contracts live in handwritten webapp modules (src/api/*.ts) and API tests. Do not treat schema/api-v1.json as the entire current API.

Path picker, uploads, jobs

Authenticated picker routes GET /api/v1/fs/roots and GET /api/v1/fs/list stay inside operator-configured roots. A list inspects at most 2000 directory entries and returns at most 500 matches. When scan_complete is false the page is a partial scan, not the first 500 names in the folder. Bounded uploads go to data/uploads/<upload_id>/ via POST /api/v1/uploads and are removed by id with DELETE /api/v1/uploads/<upload_id>. Absolute host paths never appear in URLs.

Jobs are submitted only through the internal submit_job / JobService interface. Workers run as python -m mini_atlas_graph_app.worker <job_id>. Authenticated reads are GET /api/v1/jobs, GET /api/v1/jobs/<id>, and GET /api/v1/jobs/<id>/events.

Known limitations

  • Windows checkpoint legs were not run for this cut (not passed).
  • Live SQL Server and BigQuery remain unverified.
  • HTTP publication admission still content-hashes Parquet on the request thread (fail-closed). Light jobs share one slot. Job directories are retained.
  • Multi-user / shared-server mode is withdrawn. Keep launch-token session and Host/Origin checks.
  • Warehouse-upgrade UI (P2-08) is deferred. Rebuild current warehouses rather than in-place upgrade.

Packaging a wheel (maintainers)

Release wheels vendor the compiled UI and a curated library-help snapshot. Build those assets first:

python scripts/vendor_frontend.py --dist <webapp>/dist --commit <pinned-sha> --version <ui-version>
python scripts/vendor_help.py
python -m build

Wheel and sdist builds refuse missing, extra, or tampered vendored frontend and help files. Editable installs still work without web/ and without Node. scripts/install_smoke.py is the local installed-wheel proof. .github/workflows/installed-wheel.yml is Ubuntu/macOS/Windows clean-venv smoke; it is not a release or PyPI publish workflow. .github/workflows/pypi-publish.yml vendors the same fail-closed UI, Help, tutorial assets, and migrations, then publishes the wheel and sdist to PyPI only when a GitHub Release is published. The release tag must be v plus the exact pyproject.toml version. Register a PyPI Trusted Publisher for GitHub environment pypi before the first upload; do not add a PyPI API-token secret.

Help and UI sources are commit-pinned in graph_app_build.py. scripts/vendor_help.py and scripts/assert_source_pins.py refuse a checkout whose HEAD is not that commit. See docs/F07_SIBLING_CHECKOUT.md and docs/F07_MIGRATION_PRESENCE.md.

Metadata

Release files for mini-atlas-graph-app 0.1.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for mini-atlas-graph-app 0.1.4
File Size Uploaded Provenance
mini_atlas_graph_app-0.1.4.tar.gz 791.5 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for mini-atlas-graph-app 0.1.4
File Interpreter ABI Platform
mini_atlas_graph_app-0.1.4-py3-none-any.whl Python 3 none any Details

Total release size: 1.6 MB

Release files / mini_atlas_graph_app-0.1.4.tar.gz

Download URL mini_atlas_graph_app-0.1.4.tar.gz
Size 791.5 kB
Tags Source
SHA-256 checksum
How to use checksums
e770782ea9642fb25a3a4617399afb6c891b86a6681b33fb3060d2f92737e4a6
BLAKE2b-256 checksum
How to use checksums
72b7bfb3ccd5482cc389d318089446d92e703fde6abbbb9b2a63d0e790ffe4cc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 20, 2026.

Transparency log

Release files / mini_atlas_graph_app-0.1.4-py3-none-any.whl

Download URL mini_atlas_graph_app-0.1.4-py3-none-any.whl
Size 835.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a1cb4579a7791c2ef10f2a0ca6f9085d23d370de3c5ae7a355d21391175abe87
BLAKE2b-256 checksum
How to use checksums
0899f4e4173c59ad9774893bec36cfc2ffe1040fd4a520111e42d9a7a4ba686f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 20, 2026.

Transparency log

Security for mini-atlas-graph-app 0.1.4

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for mini_atlas_graph_app-0.1.4.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 20, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page