Metadata-Version: 2.4
Name: opscontrols
Version: 0.1.2
Summary: OpsControls local-first dashboard and Codex control plane for AI employees.
Author: Curtis Qiu
License-Expression: MIT
Requires-Python: >=3.11
Description-Content-Type: text/markdown

# OpsControls

OpsControls is a local-first dashboard and control plane for Codex-powered AI employees.

It uses the deployed OPC evidence page as the UI template, then replaces static data with live local state from:

- real employee files under `.opc/employees`;
- real Codex CLI discovery and task execution;
- local task, prompt, inbox, graph, loop, and event records;
- a localhost HTTP/SSE backend.

## Run Locally

```bash
pip install -e .
opc dashboard
```

The dashboard opens at `http://127.0.0.1:8765`.

If port `8765` is already in use, OpsControls automatically selects the next available port and prints the URL.

If another installed tool shadows the `opc` executable in your shell, use:

```bash
opc-dashboard dashboard
```

On this machine, `/Users/curtisqiu/.nvm/versions/node/v22.22.0/bin/opc` currently appears before the Python `opc` script. To make `opc dashboard` resolve to OpsControls, move `/Library/Frameworks/Python.framework/Versions/3.13/bin` earlier in `PATH` or remove/rename the older Node `opc` command.

## Offline Editable Install

If you are installing without internet access and already have `setuptools` available:

```bash
python3 -m pip install -e . --no-deps --no-build-isolation
```

## PyPI Build

This project is packaged as:

- package name: `opscontrols`
- version: `0.1.2`
- primary command: `opc dashboard`

Build locally:

```bash
python3 -m pip install build twine
python3 -m build
python3 -m twine check dist/*
```

Upload manually:

```bash
python3 -m twine upload dist/*
```

Use a PyPI API token when prompted. Do not commit the token.

## Multiple Codex Accounts

OpsControls can switch between separate local Codex profiles. Each profile uses its own `CODEX_HOME`, so you can log into different ChatGPT/Codex accounts and choose which one OpsControls uses for future tasks.

Create a profile:

```bash
opc codex-account add "Backup Codex"
```

Log into that profile using the printed command, for example:

```bash
CODEX_HOME="/path/to/.opc/codex-accounts/backup-codex" codex login --device-auth
```

Switch active profile:

```bash
opc codex-account switch backup-codex
```

You can also switch profiles from `OpsControls Settings -> Codex Accounts`.
