Skip to main content

Local-first agentic browser automation factory

Project description

nga

Local-first agentic browser automation factory. This repository bootstraps the installed Factory: a pip-installable Python package that starts a local Control Room on a random loopback address and reports application and database health.

This is the first milestone of the Dark Factory MVP (spec: issue #1, ticket: issue #2). Per-user state lives in SQLite under %USERPROFILE%\.nga and never inside Git.

Requirements

  • A supported Python installation (3.11 or newer) on Windows.
  • An internet connection for the initial pip install of dependencies.

Install

After the package is published to PyPI, install it on a clean Windows user account:

py -3.11 -m pip install nga
nga install-skills

This installs the nga command and its Python dependencies into the active environment. The second command installs nga-init and vendor-delivery in %USERPROFILE%\.agents\skills for all compatible agents on that user account.

For a local checkout, use:

py -3.11 -m pip install .
nga install-skills

Playwright's Python package is installed as a dependency. If the customer PC does not have Chrome or Edge, install the managed Chromium browser once:

py -3.11 -m playwright install chromium

Start the Factory

nga serve

The Factory:

  • starts the Control Room and reports a random loopback address, for example Control Room: http://127.0.0.1:52341/ (loopback only);
  • never binds to a LAN address;
  • opens the reported address in the default browser (pass --no-open to suppress this);
  • creates the per-user SQLite database at %USERPROFILE%\.nga\state.db on first start and keeps it valid across restarts.

Set NGA_HOME to redirect per-user state to another directory:

$env:NGA_HOME = "C:\path\to\state"; nga serve

The health view at http://127.0.0.1:<port>/ shows the running application version and the local database health.

Start an automation project

Open an empty project folder and invoke $nga-init. The project stays in that folder. It uses src, tests, config, docs, data/input, data/output, and a hidden .nga control directory.

Release the package

Build and validate a wheel from the repository root:

py -3.11 -m pip install build twine
py -3.11 -m build
py -3.11 -m twine check dist\*

For the normal release path, create a GitHub Release. The repository's publish.yml workflow then builds and publishes the distributions with PyPI Trusted Publishing.

For a manual upload, run this only after the package has passed the checks:

py -3.11 -m twine upload dist\*

Focused tests

Fast startup and health behavior (no network required):

py -m pytest tests/test_state.py tests/test_control_room.py -v

Clean pip-install proof on an isolated venv (requires network to download dependencies, takes a few minutes):

py -m pytest tests/test_pip_install.py -m pip_install -v

Development environment (optional):

uv venv --python 3.11
uv pip install -p .venv -e ".[dev]"
.venv\Scripts\python -m pytest

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nga-0.2.0.tar.gz (231.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

nga-0.2.0-py3-none-any.whl (188.5 kB view details)

Uploaded Python 3

File details

Details for the file nga-0.2.0.tar.gz.

File metadata

  • Download URL: nga-0.2.0.tar.gz
  • Upload date:
  • Size: 231.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for nga-0.2.0.tar.gz
Algorithm Hash digest
SHA256 db2631a1096dcea78d489b06e69cba674fd53ee5f6671c9566225d4e214cc867
MD5 c929f021fa86eed854e0ac9dc635db9e
BLAKE2b-256 79df0a9c3ef9f954724a9b4cfaf57b5ce29ee022bd381f80ce66a52396376780

See more details on using hashes here.

Provenance

The following attestation bundles were made for nga-0.2.0.tar.gz:

Publisher: publish.yml on omerlefaruk/nga

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file nga-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: nga-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 188.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for nga-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 8d59834c9cd8d772e4cc1c19c7630cc4f592272f15264b87cf3ed066ec3839b9
MD5 eafda8e64a49572c3768065f41c05477
BLAKE2b-256 3cbc7e8ec20d35279072d2ea61887f423e5858cb392a7ebd6ee089d7ff4c200d

See more details on using hashes here.

Provenance

The following attestation bundles were made for nga-0.2.0-py3-none-any.whl:

Publisher: publish.yml on omerlefaruk/nga

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page