agenticops-control-tower 0.0.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. agenticops_control_tower-0.0.1/.github/CODEOWNERS +2 -0
  2. agenticops_control_tower-0.0.1/.github/dependabot.yml +11 -0
  3. agenticops_control_tower-0.0.1/.github/workflows/ci.yml +60 -0
  4. agenticops_control_tower-0.0.1/.github/workflows/release-pypi.yml +47 -0
  5. agenticops_control_tower-0.0.1/.gitignore +13 -0
  6. agenticops_control_tower-0.0.1/AGENTS.md +180 -0
  7. agenticops_control_tower-0.0.1/CHANGELOG.md +8 -0
  8. agenticops_control_tower-0.0.1/CI.md +13 -0
  9. agenticops_control_tower-0.0.1/CONTRIBUTING.md +26 -0
  10. agenticops_control_tower-0.0.1/DeepAgent-Control-Tower-Concept.md +990 -0
  11. agenticops_control_tower-0.0.1/LICENSE +22 -0
  12. agenticops_control_tower-0.0.1/Makefile +37 -0
  13. agenticops_control_tower-0.0.1/PKG-INFO +299 -0
  14. agenticops_control_tower-0.0.1/README.md +239 -0
  15. agenticops_control_tower-0.0.1/ROADMAP.md +368 -0
  16. agenticops_control_tower-0.0.1/SECURITY.md +14 -0
  17. agenticops_control_tower-0.0.1/docs/architecture.md +15 -0
  18. agenticops_control_tower-0.0.1/examples/sample_agent_registration.json +15 -0
  19. agenticops_control_tower-0.0.1/pyproject.toml +102 -0
  20. agenticops_control_tower-0.0.1/src/agenticops_control_tower/__init__.py +5 -0
  21. agenticops_control_tower-0.0.1/src/agenticops_control_tower/adapters/__init__.py +5 -0
  22. agenticops_control_tower-0.0.1/src/agenticops_control_tower/adapters/catalog.py +8 -0
  23. agenticops_control_tower-0.0.1/src/agenticops_control_tower/api/__init__.py +5 -0
  24. agenticops_control_tower-0.0.1/src/agenticops_control_tower/api/surface.py +28 -0
  25. agenticops_control_tower-0.0.1/src/agenticops_control_tower/cli/__init__.py +1 -0
  26. agenticops_control_tower-0.0.1/src/agenticops_control_tower/cli/main.py +11 -0
  27. agenticops_control_tower-0.0.1/src/agenticops_control_tower/config/__init__.py +5 -0
  28. agenticops_control_tower-0.0.1/src/agenticops_control_tower/config/models.py +19 -0
  29. agenticops_control_tower-0.0.1/src/agenticops_control_tower/console/__init__.py +1 -0
  30. agenticops_control_tower-0.0.1/src/agenticops_control_tower/console/app.py +7 -0
  31. agenticops_control_tower-0.0.1/src/agenticops_control_tower/discovery/__init__.py +5 -0
  32. agenticops_control_tower-0.0.1/src/agenticops_control_tower/discovery/service.py +17 -0
  33. agenticops_control_tower-0.0.1/src/agenticops_control_tower/models/__init__.py +5 -0
  34. agenticops_control_tower-0.0.1/src/agenticops_control_tower/models/agent.py +38 -0
  35. agenticops_control_tower-0.0.1/src/agenticops_control_tower/registry/__init__.py +5 -0
  36. agenticops_control_tower-0.0.1/src/agenticops_control_tower/registry/service.py +29 -0
  37. agenticops_control_tower-0.0.1/tests/test_imports.py +17 -0
  38. agenticops_control_tower-0.0.1/tests/test_registry.py +38 -0
@@ -0,0 +1,2 @@
1
+ * @DeepAgentLabs
2
+
@@ -0,0 +1,11 @@
1
+ version: 2
2
+ updates:
3
+ - package-ecosystem: "github-actions"
4
+ directory: "/"
5
+ schedule:
6
+ interval: "weekly"
7
+ - package-ecosystem: "pip"
8
+ directory: "/"
9
+ schedule:
10
+ interval: "weekly"
11
+
@@ -0,0 +1,60 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ pull_request:
7
+
8
+ jobs:
9
+ test:
10
+ runs-on: ubuntu-latest
11
+ strategy:
12
+ matrix:
13
+ python-version: ["3.10", "3.11", "3.12", "3.13"]
14
+ steps:
15
+ - uses: actions/checkout@v7
16
+
17
+ - name: Install uv
18
+ uses: astral-sh/setup-uv@v7
19
+ with:
20
+ enable-cache: true
21
+
22
+ - name: Set up Python ${{ matrix.python-version }}
23
+ run: uv python install ${{ matrix.python-version }}
24
+
25
+ - name: Install dependencies
26
+ run: uv sync --extra dev --python ${{ matrix.python-version }}
27
+
28
+ - name: Lint (ruff check)
29
+ run: uv run ruff check src tests
30
+
31
+ # Scoped to src/tests, not ".". The repo docs intentionally contain
32
+ # pseudocode and architecture snippets that are not meant to be treated
33
+ # as executable Python by the formatter.
34
+ - name: Format check (ruff format)
35
+ run: uv run ruff format --check src tests
36
+
37
+ - name: Type check (mypy)
38
+ run: uv run mypy
39
+
40
+ - name: Test (pytest)
41
+ run: uv run pytest
42
+
43
+ package:
44
+ runs-on: ubuntu-latest
45
+ needs: [test]
46
+ steps:
47
+ - uses: actions/checkout@v7
48
+ - name: Install uv
49
+ uses: astral-sh/setup-uv@v7
50
+ with:
51
+ enable-cache: true
52
+ - name: Set up Python
53
+ run: uv python install 3.12
54
+ - name: Install dependencies
55
+ run: uv sync --extra dev --python 3.12
56
+ - name: Build distributions
57
+ run: |
58
+ uv run python -m build
59
+ uv run python -m twine check dist/*
60
+
@@ -0,0 +1,47 @@
1
+ name: publish-pypi
2
+
3
+ on:
4
+ release:
5
+ types: [published]
6
+ push:
7
+ tags:
8
+ - "v*"
9
+
10
+ permissions:
11
+ contents: read
12
+
13
+ jobs:
14
+ build:
15
+ runs-on: ubuntu-latest
16
+ steps:
17
+ - uses: actions/checkout@v7
18
+ - uses: actions/setup-python@v5
19
+ with:
20
+ python-version: "3.12"
21
+ - name: Build distributions
22
+ run: |
23
+ python -m pip install --upgrade pip
24
+ python -m pip install build twine
25
+ python -m build
26
+ python -m twine check dist/*
27
+ - name: Upload distributions
28
+ uses: actions/upload-artifact@v7
29
+ with:
30
+ name: python-package-distributions
31
+ path: dist/
32
+
33
+ publish-pypi:
34
+ runs-on: ubuntu-latest
35
+ needs: build
36
+ environment: pypi
37
+ permissions:
38
+ id-token: write
39
+ steps:
40
+ - name: Download distributions
41
+ uses: actions/download-artifact@v8
42
+ with:
43
+ name: python-package-distributions
44
+ path: dist/
45
+ - name: Publish to PyPI
46
+ uses: pypa/gh-action-pypi-publish@release/v1
47
+
@@ -0,0 +1,13 @@
1
+ __pycache__/
2
+ *.py[cod]
3
+ .pytest_cache/
4
+ .mypy_cache/
5
+ .ruff_cache/
6
+ .coverage
7
+ htmlcov/
8
+ dist/
9
+ build/
10
+ *.egg-info/
11
+ .venv/
12
+ .DS_Store
13
+
@@ -0,0 +1,180 @@
1
+ ## agenticops-control-tower Development Reference
2
+
3
+ ## Ecosystem Context
4
+
5
+ ### Role in DeepAgentLabs
6
+
7
+ `agenticops-control-tower` is the operations and control-plane layer in the
8
+ DeepAgentLabs ecosystem. Its job is to centralize inventory, visibility,
9
+ configuration, and operator workflows across many deployed agents and many
10
+ DeepAgentLabs capabilities.
11
+
12
+ ### Owns
13
+
14
+ - Agent registry, heartbeat, and fleet-inventory concerns
15
+ - Capability discovery and version/status visibility across deployed agents
16
+ - The unified control-plane API, CLI, and future console surface
17
+ - Thin ecosystem adapters that summarize sibling-package posture without
18
+ re-implementing sibling-package logic
19
+
20
+ ### Does Not Own
21
+
22
+ - The canonical operational schema or shared normative object model — that
23
+ belongs in `ai-operations-spec`
24
+ - Core observability, profiling, evaluation, or recommendation logic — that
25
+ belongs in `agenticlens`
26
+ - Fault injection and resilience-testing logic — that belongs in
27
+ `agentic-chaos`
28
+ - Decision-time governance or pre-action intervention logic — that belongs in
29
+ `agentic-sidecar`
30
+ - The MCP-native access surface itself — that belongs in
31
+ `deep-agentic-core-mcp`, even when it later connects to Control Tower
32
+
33
+ ### Integrates With
34
+
35
+ - `ai-operations-spec` for shared terminology and any ecosystem-facing
36
+ inventory, status, or configuration contracts
37
+ - `agenticlens` when Control Tower needs summarized observability or readiness
38
+ posture
39
+ - `agentic-sidecar` when Control Tower needs summarized governance or risk
40
+ posture
41
+ - `agentic-chaos` when Control Tower needs summarized experiment or resilience
42
+ posture
43
+ - `deep-agentic-core-mcp` when the control plane is later exposed to AI
44
+ operators through MCP
45
+
46
+ ### Current Roadmap Focus
47
+
48
+ The current build focus is the v0.1 registry and discovery core. Work in this
49
+ repo should strengthen explicit registration, heartbeat handling, capability
50
+ inventory, and the read-only control surface before attempting orchestration,
51
+ bulk actions, or a rich dashboard.
52
+
53
+ ### Before You Build Here
54
+
55
+ - Ask whether the feature is about operator control and fleet visibility; if it
56
+ is really analysis, governance, chaos execution, or MCP exposure, it may
57
+ belong in a sibling repo instead
58
+ - Keep adapters thin and contract-driven; do not copy implementation logic from
59
+ Lens, Sidecar, Chaos, or MCP into this package
60
+ - Build read-only inventory and status first; avoid jumping ahead to write-side
61
+ orchestration without the underlying control model in place
62
+
63
+ ## Status
64
+
65
+ This repository is a **scaffold**. Package layout, docs, tests, and CI/release
66
+ workflows exist; only a very small in-memory registry/discovery/API skeleton is
67
+ implemented today. See [ROADMAP.md](ROADMAP.md) for the actual build order.
68
+
69
+ ## Build and Run
70
+
71
+ - Install: `make install` (runs `uv sync --extra dev`)
72
+ - Test: `make test` or `make check` (lint + format + typecheck + test)
73
+ - Lint: `make lint`
74
+ - Type check: `make typecheck`
75
+ - CLI: not published yet — `[project.scripts]` is intentionally absent from
76
+ `pyproject.toml` until the CLI becomes a real supported surface
77
+
78
+ ## Code Style
79
+
80
+ - Strict typing (mypy strict mode, Python 3.10+)
81
+ - Line length: 100
82
+ - Ruff rules: E, F, I, UP, B, SIM, N
83
+ - One purpose per file (separation of concerns)
84
+ - Control-plane artifacts should stay compatible with ecosystem-wide contract
85
+ work once those shapes are formalized
86
+
87
+ ## Design Constraints
88
+
89
+ These are load-bearing, not preferences — see
90
+ [ROADMAP.md](ROADMAP.md#design-constraints) for the full rationale:
91
+
92
+ 1. **Inventory before orchestration.** v0.1 should answer what exists and what
93
+ is installed before attempting remote change or fleet-wide mutation.
94
+ 2. **Read-only before write-capable.** Registration, discovery, and status must
95
+ be trustworthy before configuration or operations fan out across agents.
96
+ 3. **API and CLI before dashboard.** The console should sit on the same control
97
+ model, not become the hidden place where the real behavior lives.
98
+ 4. **Adapters stay thin.** `adapters/` should summarize or bridge, not own
99
+ Lens, Sidecar, Chaos, or MCP behavior.
100
+ 5. **Runtime agnostic means no early runtime lock-in.** Do not quietly design
101
+ the first release around one cloud, one orchestrator, or one framework.
102
+ 6. **MCP comes after the control API.** AI-native access is valuable, but it
103
+ should connect to a real control plane rather than a concept-only surface.
104
+
105
+ ## Repo Map
106
+
107
+ | Path | Purpose | Planned version |
108
+ |------|---------|------------------|
109
+ | `src/agenticops_control_tower/models/` | Shared inventory and status models | v0.1 |
110
+ | `src/agenticops_control_tower/registry/` | Agent registration, heartbeat, and inventory state | v0.1 |
111
+ | `src/agenticops_control_tower/discovery/` | Capability discovery and normalization | v0.1 |
112
+ | `src/agenticops_control_tower/api/` | Unified read-only control-plane API surface | v0.1 |
113
+ | `src/agenticops_control_tower/cli/` | Operator CLI | v0.2 |
114
+ | `src/agenticops_control_tower/console/` | AgenticOps Console / dashboard | v0.3 |
115
+ | `src/agenticops_control_tower/config/` | Central configuration models and safe write paths | v0.4 |
116
+ | `src/agenticops_control_tower/adapters/` | Thin ecosystem adapters to sibling projects and MCP | v0.5+ |
117
+ | `examples/` | Sample registration and capability payloads | ongoing |
118
+ | `tests/` | Pytest test suite | ongoing |
119
+ | `Makefile` | Local dev automation | — |
120
+
121
+ Full architecture and build order: [ROADMAP.md](ROADMAP.md).
122
+
123
+ ## Entry Points (planned)
124
+
125
+ - Python API: read-only control surface through `api/`
126
+ - CLI: `deepagent ...` (planned in v0.2)
127
+ - Console: AgenticOps Console (planned in v0.3)
128
+
129
+ ## Package Boundaries
130
+
131
+ - This package should stay **standalone** — `pip install
132
+ agenticops-control-tower` must work without requiring any other
133
+ DeepAgentLabs package
134
+ - Sibling integrations must remain optional and degrade honestly when the
135
+ sibling package is unavailable
136
+ - `api/` may depend on `registry/` and `discovery/`; the reverse should not be
137
+ true
138
+ - `models/` must not import from adapters or UI layers
139
+ - `console/` should consume the same underlying control model as `api/` and
140
+ `cli/`, not invent a parallel one
141
+
142
+ ## Adding a New Control-Plane Surface
143
+
144
+ 1. Confirm the feature belongs to operator control, inventory, configuration,
145
+ or fleet visibility rather than to a sibling runtime
146
+ 2. Add or update the shared model first if the feature changes inventory or
147
+ status meaning
148
+ 3. Add tests covering the read path before adding any write path
149
+ 4. Update `README.md` and `ROADMAP.md` if the feature changes milestone scope
150
+
151
+ ## Feature Completion Expectations
152
+
153
+ - Every behavior change must include tests
154
+ - User-facing features must include or update examples in `README.md`,
155
+ `examples/`, or docs
156
+ - When a roadmap item or milestone meaningfully changes status, update
157
+ `README.md` and `ROADMAP.md` in the same change
158
+ - If that milestone or release changes the public ecosystem story, also update
159
+ `/home/pramodbn27/PyPi Projects/.github/profile/README.md` and, when
160
+ relevant, `/home/pramodbn27/PyPi Projects/.github/profile/ROADMAP.md`
161
+ - When work is packaged as a release-ready change, also update
162
+ `pyproject.toml`, `src/agenticops_control_tower/__init__.py`, and
163
+ `CHANGELOG.md`
164
+
165
+ ## Pre-push Checklist
166
+
167
+ Run `make check` before every push. It runs: lint -> format-check -> typecheck
168
+ -> test.
169
+
170
+ ## Release
171
+
172
+ 1. Bump version in `pyproject.toml`, `src/agenticops_control_tower/__init__.py`, and `CHANGELOG.md`
173
+ 2. Commit: `git commit -am "release: vX.Y.Z"`
174
+ 3. Tag: create an annotated `vX.Y.Z` tag and use the latest `CHANGELOG.md`
175
+ release section as the tag description
176
+ 4. Push: `git push origin main --tags`
177
+
178
+ The `release-pypi.yml` workflow triggers on tag push or a published GitHub
179
+ release and publishes to PyPI via Trusted Publishing once the `pypi` GitHub
180
+ Environment and PyPI Trusted Publisher configuration exist.
@@ -0,0 +1,8 @@
1
+ # Changelog
2
+
3
+ ## 0.0.1
4
+
5
+ - Initial repository scaffold
6
+ - Concept-stage README and roadmap
7
+ - Package layout, tests, and CI/release workflows
8
+
@@ -0,0 +1,13 @@
1
+ # CI
2
+
3
+ The scaffold CI currently checks:
4
+
5
+ - installability with `uv`
6
+ - linting with `ruff`
7
+ - formatting with `ruff format --check`
8
+ - type checking with `mypy`
9
+ - tests with `pytest`
10
+ - package build integrity with `python -m build` and `twine check`
11
+
12
+ The workflows live under [`.github/workflows/`](.github/workflows/).
13
+
@@ -0,0 +1,26 @@
1
+ # Contributing
2
+
3
+ This repository is still in the scaffold stage.
4
+
5
+ For now, contributions should stay focused on:
6
+
7
+ - clarifying the control-plane boundary
8
+ - tightening the registration and discovery model
9
+ - building narrow, testable implementation slices from [ROADMAP.md](ROADMAP.md)
10
+
11
+ Before opening a large feature PR, prefer aligning the milestone and package
12
+ boundary first in an issue or design note.
13
+
14
+ ## Local development
15
+
16
+ ```bash
17
+ make install
18
+ make check
19
+ ```
20
+
21
+ ## Scope discipline
22
+
23
+ `agenticops-control-tower` should own operator-facing control-plane behavior.
24
+ If a change mostly adds observability logic, governance logic, chaos logic, or
25
+ MCP logic, it may belong in a sibling repository instead.
26
+