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.3.0.tar.gz (242.9 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.3.0-py3-none-any.whl (196.8 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for nga-0.3.0.tar.gz
Algorithm Hash digest
SHA256 6c46145637c2e2446eab5c68de2a2943b47e3c3fea088f02f00819ec8074aa13
MD5 026e47cd592e3c134ad128ca9f6d81de
BLAKE2b-256 1c27fec43701f75d4818daaedae9f7750156f26918317b8ff3a16376a47a16cd

See more details on using hashes here.

Provenance

The following attestation bundles were made for nga-0.3.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.3.0-py3-none-any.whl.

File metadata

  • Download URL: nga-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 196.8 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.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1bb12516febf75be5a1eb84bcf7fa297df22db987859e9d7d2cbc7823a15e15f
MD5 a908db14e4a16c9950e273b78e1d223d
BLAKE2b-256 2ea60bee08c24103ff6ee1a97c86bc24dd9a67e5983a0a805a422a563e76f6ce

See more details on using hashes here.

Provenance

The following attestation bundles were made for nga-0.3.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