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. Install the wheel (and the three library wheels it depends on) from the files you were given until a GitHub Release has been published to PyPI. .github/workflows/pypi-publish.yml is that publisher; ordinary pushes and pull requests do not upload.

python3 -m venv .venv
source .venv/bin/activate
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.0-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). Warehouse DuckDB files live under configured warehouse_roots. CSV/SQLite/DuckDB sources live under input_roots. Export folders live under export_roots. Create those folders before the first launch, or let serve create a default layout and then edit config.toml.

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 generated from mini_atlas_graph_app/contracts/models.py. Those models cover the F-06 / J1 graph-web HTTP subset (graphs, jobs, slice preview, exports, and related types). They do not describe the expanded first-release surface: SQL console, external ETL, config-files, backup/restore, Help search, analytics import, Expansion/Resume, mapping/Avro, and related routes.

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 the OpenAPI file 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.0

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.0
File Size Uploaded
mini_atlas_graph_app-0.1.0.tar.gz 785.6 kB Details

Built distribution (wheel)

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

Total release size: 1.6 MB

Release files / mini_atlas_graph_app-0.1.0.tar.gz

Download URL mini_atlas_graph_app-0.1.0.tar.gz
Size 785.6 kB
Tags Source
SHA-256 checksum
How to use checksums
70dc9dd3279e7458873b5b99aeefb583125158c68374f1b8c602ef07b57f0d0e
BLAKE2b-256 checksum
How to use checksums
7661e31c00b320846654d1e59a3a20b8d451ea1d5df42754a66a2f7276131961
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 15, 2026.

Transparency log

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

Download URL mini_atlas_graph_app-0.1.0-py3-none-any.whl
Size 830.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0787adb3ff9c9f66af3e67c85ba28936414d3a502fb74fdd443ead4918ecebd8
BLAKE2b-256 checksum
How to use checksums
332464d2bc9f7f9c17f7c16a75f83f98c8b01a457797f04d8bba32b511435987
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 15, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

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