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.0.1.tar.gz (231.4 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.0.1-py3-none-any.whl (187.4 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for nga-0.0.1.tar.gz
Algorithm Hash digest
SHA256 cefd0ce15acc73fb0b96af0665cfc10fc55e352bdf5799308b1f5ef2f584fe90
MD5 51265ad729809881a48e89936a8352db
BLAKE2b-256 4ca457393a46732b855819c3240065245f6fef110f328f09ffed6c9e606a3b87

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: nga-0.0.1-py3-none-any.whl
  • Upload date:
  • Size: 187.4 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.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 f5a4162ae927e2402bd1ea75ffa811c4816921ea74b5568ea5d41ec4598d73f2
MD5 abbb57ba82b3aa8f2ff89b8cef3de296
BLAKE2b-256 86dc3d3ce88001ff81f651599a494e0e5f998a4a1b2b553655c84a6d1de1c7c0

See more details on using hashes here.

Provenance

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