Metadata-Version: 2.4
Name: arbiter-ops
Version: 1.0.5
Summary: AIOps substrate · 9-plane hexagonal decomposition · pluggable adapters · audit-port primitive · alignment patterns for ISO 42001 / NIST AI RMF / EU AI Act / DORA
Project-URL: Homepage, https://github.com/mjayason/arbiter-ops
Project-URL: Documentation, https://github.com/mjayason/arbiter-ops/tree/main/docs
Project-URL: Repository, https://github.com/mjayason/arbiter-ops
Project-URL: Changelog, https://github.com/mjayason/arbiter-ops/blob/main/CHANGELOG.md
Project-URL: Issues, https://github.com/mjayason/arbiter-ops/issues
Project-URL: Release notes, https://github.com/mjayason/arbiter-ops/releases
Author: arbiter-ops Authors
License-Expression: Apache-2.0
License-File: LICENSE
Keywords: agent-governance,aiops,audit-substrate,hexagonal,hil,incident-response,observability,site-reliability,temporal
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Information Technology
Classifier: Intended Audience :: System Administrators
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: System :: Logging
Classifier: Topic :: System :: Monitoring
Classifier: Topic :: System :: Systems Administration
Requires-Python: >=3.11
Requires-Dist: fastapi<1.0,>=0.115
Requires-Dist: opentelemetry-api>=1.27
Requires-Dist: opentelemetry-exporter-otlp>=1.27
Requires-Dist: opentelemetry-sdk>=1.27
Requires-Dist: psycopg2-binary<3.0,>=2.9
Requires-Dist: pydantic<3.0,>=2.0
Requires-Dist: sqlalchemy<3.0,>=2.0
Requires-Dist: temporalio>=1.6
Requires-Dist: uvicorn[standard]<1.0,>=0.32
Provides-Extra: all
Requires-Dist: anthropic>=0.39; extra == 'all'
Requires-Dist: confluent-kafka>=2.6; extra == 'all'
Requires-Dist: cryptography>=42.0; extra == 'all'
Requires-Dist: httpx>=0.27; extra == 'all'
Requires-Dist: litellm>=1.50; extra == 'all'
Requires-Dist: mcp>=1.0; extra == 'all'
Requires-Dist: neo4j>=5.20; extra == 'all'
Requires-Dist: numpy>=1.26; extra == 'all'
Requires-Dist: portkey-ai>=1.8; extra == 'all'
Requires-Dist: requests>=2.32; extra == 'all'
Requires-Dist: scikit-learn>=1.4; extra == 'all'
Requires-Dist: scipy>=1.13; extra == 'all'
Requires-Dist: slack-sdk>=3.27; extra == 'all'
Requires-Dist: xgboost<3.0,>=2.0; extra == 'all'
Requires-Dist: z3-solver>=4.13; extra == 'all'
Provides-Extra: integrations
Requires-Dist: httpx>=0.27; extra == 'integrations'
Requires-Dist: requests>=2.32; extra == 'integrations'
Provides-Extra: kafka
Requires-Dist: confluent-kafka>=2.6; extra == 'kafka'
Provides-Extra: litellm
Requires-Dist: litellm>=1.50; extra == 'litellm'
Provides-Extra: llm
Requires-Dist: anthropic>=0.39; extra == 'llm'
Provides-Extra: mcp
Requires-Dist: mcp>=1.0; extra == 'mcp'
Provides-Extra: ml-decision
Requires-Dist: numpy>=1.26; extra == 'ml-decision'
Requires-Dist: scikit-learn>=1.4; extra == 'ml-decision'
Requires-Dist: xgboost<3.0,>=2.0; extra == 'ml-decision'
Provides-Extra: ml-intelligence
Requires-Dist: numpy>=1.26; extra == 'ml-intelligence'
Requires-Dist: scikit-learn>=1.4; extra == 'ml-intelligence'
Requires-Dist: xgboost<3.0,>=2.0; extra == 'ml-intelligence'
Provides-Extra: ml-surrogate
Requires-Dist: numpy>=1.26; extra == 'ml-surrogate'
Requires-Dist: scipy>=1.13; extra == 'ml-surrogate'
Requires-Dist: xgboost<3.0,>=2.0; extra == 'ml-surrogate'
Provides-Extra: neo4j
Requires-Dist: neo4j>=5.20; extra == 'neo4j'
Provides-Extra: portkey
Requires-Dist: portkey-ai>=1.8; extra == 'portkey'
Provides-Extra: signing
Requires-Dist: cryptography>=42.0; extra == 'signing'
Provides-Extra: slack
Requires-Dist: slack-sdk>=3.27; extra == 'slack'
Provides-Extra: smt
Requires-Dist: z3-solver>=4.13; extra == 'smt'
Description-Content-Type: text/markdown

# arbiter-ops

Agentic AIOps substrate as a standalone package — 9-plane hexagonal
decomposition with alignment patterns for ISO 42001, NIST AI RMF,
EU AI Act, and DORA implementations (not a certification). Provides
the substrate for closed-loop incident response, HIL approval
workflows, and self-improvement campaigns on top of a native audit
primitive.

## Install

```bash
pip install arbiter-ops
```

Optional extras:

```bash
pip install arbiter-ops[slack]            # Slack channel + triage rooms
pip install arbiter-ops[neo4j]            # Neo4j context plane
pip install arbiter-ops[integrations]     # PagerDuty + Splunk SOAR + Dynatrace
pip install arbiter-ops[llm]              # Anthropic LLM adapter (direct SDK)
pip install arbiter-ops[litellm]          # LiteLLM cross-provider abstraction
pip install arbiter-ops[portkey]          # Portkey AI Gateway (virtual keys, fallback, semantic cache)
pip install arbiter-ops[mcp]              # MCP server (arbiter-ops-mcp · 7 substrate tools)
pip install arbiter-ops[kafka]            # Kafka event-stream sensing
pip install arbiter-ops[ml-decision]      # XGBoost triage classifier
pip install arbiter-ops[ml-intelligence]  # XGBoost cost predictor (3-booster)
pip install arbiter-ops[ml-surrogate]     # XGBoost GA surrogate fitness
pip install arbiter-ops[smt]              # z3-solver constraint verifier
pip install arbiter-ops[signing]          # Ed25519 recipe-pack signing
pip install arbiter-ops[all]              # everything
```

## Quick start

```bash
# 1. Spin up Postgres + Temporal
docker compose -f docker-compose.yml up -d

# 2. Migrate
arbiter-ops migrate \
  --dsn "postgresql://postgres:arbiter-ops@localhost/arbiter_ops"

# 3. Serve the API
arbiter-ops serve --port 8003

# 4. Run the HIL Temporal worker
arbiter-ops-hil-worker --temporal-host localhost:7233 --task-queue hil

# 5. Smoke test
arbiter-ops smoke-test
```

## Architecture

`arbiter-ops` packages the 9-plane hexagonal AIOps decomposition into
a single distributable. Each plane is a hex container with its own
domain types, ports, and pluggable adapters:

| plane          | responsibility                                            |
|----------------|-----------------------------------------------------------|
| sensing        | ingest signals from observability sources                 |
| context        | entity + topology resolver                                |
| feature        | feature engineering for downstream reasoners              |
| intelligence   | LLM + ML reasoners (provider-neutral)                     |
| reasoning      | ensemble + causal classifier                              |
| decision       | policy engine + autonomy levels                           |
| action         | invokers (PagerDuty · Splunk SOAR · Dynatrace · etc.)     |
| evidence       | facade over the audit record store                        |
| improvement    | offline GA campaign + policy evolution                    |

Three first-class supporting containers ride alongside the planes:
the HITL Gating Service (G-1..G-5 gate types), the Adversarial
Verifier, and the Global Circuit Breaker.

## Native audit primitive

Every governed decision flows through `arbiter_ops.governance.AuditPort`
via `authorize` (consulted before commit) and `record` (post-hoc
evidence). The default `LocalAuditAdapter` is a default-permit adapter
that emits JSON-line evidence to stdout (or to the file pointed at by
`ARBITER_OPS_AUDIT_PATH`). Operators replace it by registering an
alternate `AuditPort` implementation in the application container.

```python
from arbiter_ops.governance import make_default_audit_port, AuditRequest

port = make_default_audit_port()                 # LocalAuditAdapter
verdict = port.authorize(AuditRequest.new())     # always APPROVE by default
# ... run the decision ...
# port.record(AuditRecord.from_components(...))  # emit evidence
```

## Documentation

All package-specific docs live under [`docs/`](https://github.com/mjayason/arbiter-ops/tree/main/docs) in the GitHub repo. HTML files are linked through [htmlpreview.github.io](https://htmlpreview.github.io) so they render in-browser without cloning.

### Package docs

| Doc | What it covers |
|---|---|
| [`dev_guide.html`](https://htmlpreview.github.io/?https://github.com/mjayason/arbiter-ops/blob/main/docs/dev_guide.html) ([source](https://github.com/mjayason/arbiter-ops/blob/main/docs/dev_guide.html)) | 14-section developer guide · install → 5-min smoke → C4 architecture → 9-plane usage with runnable examples → troubleshooting |
| [`FEATURES.md`](https://github.com/mjayason/arbiter-ops/blob/main/docs/FEATURES.md) · [`FEATURES.html`](https://htmlpreview.github.io/?https://github.com/mjayason/arbiter-ops/blob/main/docs/FEATURES.html) | Full capability catalog · all 9 planes + 11 supporting containers · port + adapter counts · architectural invariants |
| [`DEFERRED.md`](https://github.com/mjayason/arbiter-ops/blob/main/docs/DEFERRED.md) | External-blocker items (Cedar engine · top-level CLI · etc.) |
| [`triage_classifier.md`](https://github.com/mjayason/arbiter-ops/blob/main/docs/triage_classifier.md) | XGBoost triage classifier (decision plane) deep-dive |
| [`cost_predictor.md`](https://github.com/mjayason/arbiter-ops/blob/main/docs/cost_predictor.md) | XGBoost cost predictor + `CostAwareRouter` (intelligence plane) deep-dive |
| [`fitness_surrogate.md`](https://github.com/mjayason/arbiter-ops/blob/main/docs/fitness_surrogate.md) | XGBoost GA surrogate + `HybridFitnessEvaluator` (improvement plane) deep-dive |
| [`portkey_integration.md`](https://github.com/mjayason/arbiter-ops/blob/main/docs/portkey_integration.md) | Portkey AI Gateway integration · reasoner + invoker · virtual keys · config-driven fallback · semantic cache |
| [`mcp_integration.md`](https://github.com/mjayason/arbiter-ops/blob/main/docs/mcp_integration.md) | MCP (Model Context Protocol) integration · `MCPToolInvoker` (action plane) + `arbiter-ops-mcp` server (7 substrate tools) |
| [`CHANGELOG.md`](https://github.com/mjayason/arbiter-ops/blob/main/CHANGELOG.md) | Per-release notes |

### Compliance + benchmarks

| Doc | What it covers |
|---|---|
| [`BENCHMARKS.md`](https://github.com/mjayason/arbiter-ops/blob/main/docs/BENCHMARKS.md) | Published Layer 2a performance numbers (1.15M ops/sec band lookup · sub-microsecond hot path · reproducible methodology) |
| [`owasp-agentic-mapping.md`](https://github.com/mjayason/arbiter-ops/blob/main/docs/compliance/owasp-agentic-mapping.md) | OWASP Agentic Top 10 coverage map (ASI-01..ASI-10) · 6/10 full · 4/10 partial (operator-supplied adapters for the partials) |

### Deployment

Production deployment assets ship under [`deploy/`](https://github.com/mjayason/arbiter-ops/tree/main/deploy) in the GitHub repo (not in the Python wheel — clone the repo to use these):

| Path | What it covers |
|---|---|
| [`deploy/helm/arbiter-ops/`](https://github.com/mjayason/arbiter-ops/tree/main/deploy/helm/arbiter-ops) | Helm chart · API + HIL Temporal worker · HPA · PDB · NetworkPolicy · CIS-aligned PodSecurityContext · cert-manager + sub-chart Postgres/Temporal |
| [`deploy/overlays/prod/`](https://github.com/mjayason/arbiter-ops/tree/main/deploy/overlays/prod) | Production overlay · IRSA-wired ServiceAccount · 4 SealedSecret templates · IRSA Terraform module · ArgoCD `Application` manifest · operator runbook |

## Standards alignment

> **Not certified.** `arbiter-ops` is **not** certified against any of the standards listed below. The substrate provides contracts and primitives that operators may use as evidence in their *own* certification audits. No claim of compliance is made by the maintainers; standards-body audits, third-party assessments, and regulatory acceptance are the operator's responsibility. The table below describes what the substrate contributes — full alignment depends on operator-supplied adapters (durable audit storage, identity provider, key custody, etc.) and the operator's own audit-and-attestation process.

See [`docs/compliance/owasp-agentic-mapping.md`](https://github.com/mjayason/arbiter-ops/blob/main/docs/compliance/owasp-agentic-mapping.md) for an honest substrate-vs-adapter split (informational only, not a security audit).

| Standard                | What arbiter-ops contributes                                                                          |
|-------------------------|-------------------------------------------------------------------------------------------------------|
| ISO/IEC 42001 (AIMS)    | AuditPort · approach-band registry · HIL gate types · primitives operators may use as AIMS evidence  |
| NIST AI RMF             | Govern + Map ports · evidence flow primitives operators may use for Measure + Manage                 |
| EU AI Act               | Per-call `authorize/record` envelope · adapter chooses retention semantics                            |
| DORA                    | ICT-incident-response primitives · event-bus port · evidence emission                                 |
| OWASP Agentic Top 10    | 6/10 full · 4/10 partial (operator adapters close the partials)                                       |

The mapping above is descriptive of what the substrate ships, not a representation that any specific clause or article of any standard is satisfied. Operators map substrate primitives to specific clause/article requirements as part of their own audit and attestation process.

## Trademarks

Product names, logos, and brand names referenced in this codebase and its documentation (PagerDuty · Splunk · Dynatrace · Datadog · ServiceNow · Atlassian · Microsoft · Anthropic · OpenAI · Postgres · Temporal · Slack · Neo4j · Kubernetes · and others) are property of their respective owners. Use of these names is for interoperability identification only and does **not** imply endorsement, affiliation, partnership, or sponsorship. See [`TRADEMARKS.md`](https://github.com/mjayason/arbiter-ops/blob/main/TRADEMARKS.md) for the full list and attribution.

## Disclosure: AI-assisted authorship

Portions of this project — code, tests, documentation, and operator runbooks — were authored with AI assistance. The maintainers believe in good faith that all incorporated code is either original or sourced from properly-licensed permissive-license open-source projects with attribution preserved. This statement is a non-binding declaration of intent and does not constitute a warranty (see the No warranty section below and the Apache-2.0 LICENSE for the controlling disclaimer). If you believe any portion of this codebase improperly incorporates third-party material, please file an issue at [`https://github.com/mjayason/arbiter-ops/issues`](https://github.com/mjayason/arbiter-ops/issues) and the maintainers will investigate and resolve promptly.

## No warranty

`arbiter-ops` is distributed under the Apache License, Version 2.0, **WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND**, either express or implied. The maintainers do not warrant that the substrate is fit for any particular purpose, free of defects, free of security vulnerabilities, or suitable for use in regulated environments. Operators are solely responsible for evaluating fitness for their use case, validating security posture against their threat model, and obtaining any certifications, audits, or regulatory acceptance their use requires. Nothing in this README, the accompanying docs, the benchmark numbers, or the compliance mappings constitutes legal, regulatory, security, or compliance advice. See [`LICENSE`](LICENSE) for the full warranty disclaimer and limitation of liability.

## License

Apache-2.0 · see [`LICENSE`](LICENSE).
