fips-agents-cli 0.5.1__tar.gz → 0.6.0__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.
- {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/PKG-INFO +42 -2
- {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/README.md +41 -1
- fips_agents_cli-0.6.0/planning/agent-registry-roadmap.md +156 -0
- fips_agents_cli-0.6.0/planning/composable-agent-capabilities.md +126 -0
- {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/pyproject.toml +1 -1
- fips_agents_cli-0.6.0/retrospectives/2026-04-10_full-stack-integration/RETRO.md +64 -0
- {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/src/fips_agents_cli/commands/create.py +754 -81
- {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/src/fips_agents_cli/tools/project.py +175 -0
- {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/src/fips_agents_cli/version.py +1 -1
- {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/.claude/commands/create-release.md +0 -0
- {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/.claude/docs-state.json +0 -0
- {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/.github/agents/README.md +0 -0
- {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/.github/agents/create-release.agent.md +0 -0
- {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/.github/workflows/test.yml +0 -0
- {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/.github/workflows/workflow.yaml +0 -0
- {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/.gitignore +0 -0
- {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/CLAUDE.md +0 -0
- {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/LICENSE +0 -0
- {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/RELEASE_CHECKLIST.md +0 -0
- {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/docs/PUBLISHING.md +0 -0
- {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/docs/QUICK_START_PUBLISHING.md +0 -0
- {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/docs/README.md +0 -0
- {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/llms.txt +0 -0
- {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/planning/AGENT_FRAMEWORK_PLAN.md +0 -0
- {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/planning/GENERATOR_IMPLEMENTATION_PLAN.md +0 -0
- {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/planning/IMPLEMENTATION_SUMMARY.md +0 -0
- {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/planning/MVP-PLAN.md +0 -0
- {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/planning/PLAN.md +0 -0
- {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/planning/PROMPT_ISSUE.md +0 -0
- {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/planning/agent-template-gaps.md +0 -0
- {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/research/BAML_RESEARCH_REPORT.md +0 -0
- {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/research/Ignite-CLI-Architecture-Analysis.md +0 -0
- {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/retrospectives/2026-04-06_issue-triage-v0.3.0/RETRO.md +0 -0
- {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/scripts/README.md +0 -0
- {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/scripts/release.sh +0 -0
- {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/src/fips_agents_cli/__init__.py +0 -0
- {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/src/fips_agents_cli/__main__.py +0 -0
- {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/src/fips_agents_cli/cli.py +0 -0
- {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/src/fips_agents_cli/commands/__init__.py +0 -0
- {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/src/fips_agents_cli/commands/generate.py +0 -0
- {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/src/fips_agents_cli/commands/model_car.py +0 -0
- {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/src/fips_agents_cli/commands/patch.py +0 -0
- {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/src/fips_agents_cli/tools/__init__.py +0 -0
- {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/src/fips_agents_cli/tools/filesystem.py +0 -0
- {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/src/fips_agents_cli/tools/generators.py +0 -0
- {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/src/fips_agents_cli/tools/git.py +0 -0
- {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/src/fips_agents_cli/tools/github.py +0 -0
- {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/src/fips_agents_cli/tools/patching.py +0 -0
- {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/src/fips_agents_cli/tools/validation.py +0 -0
- {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/tests/__init__.py +0 -0
- {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/tests/conftest.py +0 -0
- {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/tests/test_create.py +0 -0
- {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/tests/test_filesystem.py +0 -0
- {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/tests/test_generate.py +0 -0
- {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/tests/test_generators.py +0 -0
- {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/tests/test_github.py +0 -0
- {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/tests/test_model_car.py +0 -0
- {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/tests/test_project.py +0 -0
- {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/tests/test_validation.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: fips-agents-cli
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.6.0
|
|
4
4
|
Summary: CLI tool for creating and managing FIPS-compliant AI agent projects
|
|
5
5
|
Project-URL: Homepage, https://github.com/rdwj/fips-agents-cli
|
|
6
6
|
Project-URL: Repository, https://github.com/rdwj/fips-agents-cli
|
|
@@ -38,7 +38,7 @@ A command-line tool for creating and managing FIPS-compliant AI agent projects.
|
|
|
38
38
|
## Features
|
|
39
39
|
|
|
40
40
|
- 🚀 Quick project scaffolding from templates
|
|
41
|
-
- 📦 MCP server, AI agent, Go gateway, chat UI, and ModelCar project generation
|
|
41
|
+
- 📦 MCP server, AI agent, Go gateway, chat UI, sandbox, and ModelCar project generation
|
|
42
42
|
- 🔧 Automatic project customization (pyproject.toml, module names, entry points)
|
|
43
43
|
- ⚡ Component generation (tools, resources, prompts, middleware) with Jinja2 templates
|
|
44
44
|
- 🎨 Beautiful CLI output with Rich
|
|
@@ -106,6 +106,9 @@ fips-agents create gateway my-gateway
|
|
|
106
106
|
# Chat UI (connects to a gateway or agent)
|
|
107
107
|
fips-agents create ui my-chat-ui
|
|
108
108
|
|
|
109
|
+
# Code execution sandbox (sidecar for agents)
|
|
110
|
+
fips-agents create sandbox my-sandbox
|
|
111
|
+
|
|
109
112
|
# ModelCar (HuggingFace model as container)
|
|
110
113
|
fips-agents create model-car ibm-granite/granite-3.1-2b-instruct \
|
|
111
114
|
quay.io/user/models:granite-3.1-2b-instruct
|
|
@@ -273,6 +276,33 @@ fips-agents create ui my-chat-ui
|
|
|
273
276
|
fips-agents create ui my-chat-ui --github --private
|
|
274
277
|
```
|
|
275
278
|
|
|
279
|
+
#### `create sandbox`
|
|
280
|
+
|
|
281
|
+
```bash
|
|
282
|
+
fips-agents create sandbox <project-name> [OPTIONS]
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
Creates a code execution sandbox project from the [code-sandbox](https://github.com/fips-agents/code-sandbox) repository. The sandbox provides a FastAPI-based sidecar for secure code execution inside agent pods, with multiple language profiles (base, data-science).
|
|
286
|
+
|
|
287
|
+
**Arguments:**
|
|
288
|
+
|
|
289
|
+
- `project-name` -- Name for your sandbox project
|
|
290
|
+
|
|
291
|
+
**Options:** Same shared options as above.
|
|
292
|
+
|
|
293
|
+
**Examples:**
|
|
294
|
+
|
|
295
|
+
```bash
|
|
296
|
+
# Create sandbox project
|
|
297
|
+
fips-agents create sandbox my-sandbox
|
|
298
|
+
|
|
299
|
+
# Create with GitHub repo
|
|
300
|
+
fips-agents create sandbox my-sandbox --github --private
|
|
301
|
+
|
|
302
|
+
# Non-interactive mode
|
|
303
|
+
fips-agents create sandbox my-sandbox --yes --local
|
|
304
|
+
```
|
|
305
|
+
|
|
276
306
|
#### `create model-car`
|
|
277
307
|
|
|
278
308
|
```bash
|
|
@@ -625,6 +655,16 @@ make build-openshift PROJECT=my-chat-ui # Build on OpenShift
|
|
|
625
655
|
make deploy PROJECT=my-chat-ui # Deploy via Helm
|
|
626
656
|
```
|
|
627
657
|
|
|
658
|
+
### Sandbox
|
|
659
|
+
|
|
660
|
+
```bash
|
|
661
|
+
cd my-sandbox
|
|
662
|
+
make install # Install dependencies
|
|
663
|
+
make test # Run tests
|
|
664
|
+
make build # Build container
|
|
665
|
+
make build PROFILE=data-science # Build with profile
|
|
666
|
+
```
|
|
667
|
+
|
|
628
668
|
### ModelCar
|
|
629
669
|
|
|
630
670
|
```bash
|
|
@@ -5,7 +5,7 @@ A command-line tool for creating and managing FIPS-compliant AI agent projects.
|
|
|
5
5
|
## Features
|
|
6
6
|
|
|
7
7
|
- 🚀 Quick project scaffolding from templates
|
|
8
|
-
- 📦 MCP server, AI agent, Go gateway, chat UI, and ModelCar project generation
|
|
8
|
+
- 📦 MCP server, AI agent, Go gateway, chat UI, sandbox, and ModelCar project generation
|
|
9
9
|
- 🔧 Automatic project customization (pyproject.toml, module names, entry points)
|
|
10
10
|
- ⚡ Component generation (tools, resources, prompts, middleware) with Jinja2 templates
|
|
11
11
|
- 🎨 Beautiful CLI output with Rich
|
|
@@ -73,6 +73,9 @@ fips-agents create gateway my-gateway
|
|
|
73
73
|
# Chat UI (connects to a gateway or agent)
|
|
74
74
|
fips-agents create ui my-chat-ui
|
|
75
75
|
|
|
76
|
+
# Code execution sandbox (sidecar for agents)
|
|
77
|
+
fips-agents create sandbox my-sandbox
|
|
78
|
+
|
|
76
79
|
# ModelCar (HuggingFace model as container)
|
|
77
80
|
fips-agents create model-car ibm-granite/granite-3.1-2b-instruct \
|
|
78
81
|
quay.io/user/models:granite-3.1-2b-instruct
|
|
@@ -240,6 +243,33 @@ fips-agents create ui my-chat-ui
|
|
|
240
243
|
fips-agents create ui my-chat-ui --github --private
|
|
241
244
|
```
|
|
242
245
|
|
|
246
|
+
#### `create sandbox`
|
|
247
|
+
|
|
248
|
+
```bash
|
|
249
|
+
fips-agents create sandbox <project-name> [OPTIONS]
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
Creates a code execution sandbox project from the [code-sandbox](https://github.com/fips-agents/code-sandbox) repository. The sandbox provides a FastAPI-based sidecar for secure code execution inside agent pods, with multiple language profiles (base, data-science).
|
|
253
|
+
|
|
254
|
+
**Arguments:**
|
|
255
|
+
|
|
256
|
+
- `project-name` -- Name for your sandbox project
|
|
257
|
+
|
|
258
|
+
**Options:** Same shared options as above.
|
|
259
|
+
|
|
260
|
+
**Examples:**
|
|
261
|
+
|
|
262
|
+
```bash
|
|
263
|
+
# Create sandbox project
|
|
264
|
+
fips-agents create sandbox my-sandbox
|
|
265
|
+
|
|
266
|
+
# Create with GitHub repo
|
|
267
|
+
fips-agents create sandbox my-sandbox --github --private
|
|
268
|
+
|
|
269
|
+
# Non-interactive mode
|
|
270
|
+
fips-agents create sandbox my-sandbox --yes --local
|
|
271
|
+
```
|
|
272
|
+
|
|
243
273
|
#### `create model-car`
|
|
244
274
|
|
|
245
275
|
```bash
|
|
@@ -592,6 +622,16 @@ make build-openshift PROJECT=my-chat-ui # Build on OpenShift
|
|
|
592
622
|
make deploy PROJECT=my-chat-ui # Deploy via Helm
|
|
593
623
|
```
|
|
594
624
|
|
|
625
|
+
### Sandbox
|
|
626
|
+
|
|
627
|
+
```bash
|
|
628
|
+
cd my-sandbox
|
|
629
|
+
make install # Install dependencies
|
|
630
|
+
make test # Run tests
|
|
631
|
+
make build # Build container
|
|
632
|
+
make build PROFILE=data-science # Build with profile
|
|
633
|
+
```
|
|
634
|
+
|
|
595
635
|
### ModelCar
|
|
596
636
|
|
|
597
637
|
```bash
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
# Agent Registry — Research and Roadmap
|
|
2
|
+
|
|
3
|
+
**Date:** 2026-04-10
|
|
4
|
+
**Status:** Research complete, not yet planned for implementation
|
|
5
|
+
|
|
6
|
+
## Concept
|
|
7
|
+
|
|
8
|
+
`fips-agents create registry my-registry` deploys a self-hosted registry to OpenShift with a UI for browsing and managing registered agents, MCP servers, tools, and prompts. Teams register their deployed services with `fips-agents register`, making them discoverable across the organization.
|
|
9
|
+
|
|
10
|
+
## Industry Landscape (April 2026)
|
|
11
|
+
|
|
12
|
+
### What exists
|
|
13
|
+
|
|
14
|
+
**Agent discovery standards:**
|
|
15
|
+
- **A2A Agent Cards** — JSON metadata at `/.well-known/agent.json` describing an agent's capabilities, endpoints, and auth. Linux Foundation stewardship. No registry standard yet (active discussion in a2aproject/A2A#741).
|
|
16
|
+
- **MCP Server Cards** — `.well-known` metadata for MCP servers, on the 2026 MCP roadmap. The official MCP Registry (registry.modelcontextprotocol.io) has ~2,000 entries but is public/community-oriented, not enterprise.
|
|
17
|
+
- **Agent Connect Protocol (ACP)** — Cisco-led (AGNTCY/Linux Foundation), defines REST/OpenAPI for invoking and configuring agents. Complements A2A.
|
|
18
|
+
|
|
19
|
+
**Cloud provider registries:**
|
|
20
|
+
- **AWS Agent Registry** (preview April 2026) — private governed catalog for agents, tools, skills, MCP servers. Semantic search, approval workflows, IAM + OAuth, CloudTrail audit. Auto-discovers from live A2A/MCP endpoints.
|
|
21
|
+
- **Microsoft Entra Agent Registry** — agent identity and governance in the Microsoft ecosystem.
|
|
22
|
+
- **Google Vertex AI Agent Builder** — tool governance layer with admin-curated catalogs.
|
|
23
|
+
|
|
24
|
+
**Open source:**
|
|
25
|
+
- **mcp-gateway-registry** (agentic-community) — OAuth (Keycloak/Entra), per-tool RBAC, audit trails, reverse proxy to MCP servers. Closest to what we'd want.
|
|
26
|
+
- **kagent** — Kubernetes-native agentic AI, CRD-based. Early stage.
|
|
27
|
+
|
|
28
|
+
**Prompt registries:**
|
|
29
|
+
- MLflow Prompt Registry, Langfuse, PromptLayer, LangSmith — versioning, environment aliases, A/B testing. Standalone products, not integrated with agent/tool registries.
|
|
30
|
+
|
|
31
|
+
**Red Hat direction:**
|
|
32
|
+
- MCP registry, catalog, and gateway stack planned for OpenShift AI
|
|
33
|
+
- MCP servers as items in the AI Assets catalog
|
|
34
|
+
- Longer-term "MCP-as-a-Service" vision
|
|
35
|
+
|
|
36
|
+
### What's missing
|
|
37
|
+
|
|
38
|
+
No single open-source system unifies agents, MCP servers, tools, and prompts in one governed catalog with Kubernetes-native lifecycle. The pieces exist in isolation:
|
|
39
|
+
- AWS has the richest registry but is cloud-locked
|
|
40
|
+
- MCP has a public registry but no enterprise governance
|
|
41
|
+
- Prompt registries are standalone products
|
|
42
|
+
- RBAC is protocol-specific (no cross-protocol standard)
|
|
43
|
+
- A2A deliberately punts on the registry problem
|
|
44
|
+
|
|
45
|
+
### RBAC for agents
|
|
46
|
+
|
|
47
|
+
Traditional RBAC is insufficient — agents chain multi-step plans autonomously. Emerging model is **dynamic RBAC**: bind an agent's declared purpose + operational context + verified identity to minimal, temporary permissions. Per-tool RBAC (mcp-gateway-registry), relationship-based access (Oso ReBAC), and IAM-based governance (AWS) are the main approaches.
|
|
48
|
+
|
|
49
|
+
## What We'd Build
|
|
50
|
+
|
|
51
|
+
### Phase 1: Discovery registry (near-term, after composable capabilities)
|
|
52
|
+
|
|
53
|
+
A lightweight catalog service that stores and serves metadata:
|
|
54
|
+
|
|
55
|
+
```
|
|
56
|
+
fips-agents create registry my-registry # Deploy to OpenShift
|
|
57
|
+
fips-agents register # Register current project
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
**What it stores:**
|
|
61
|
+
- Agent Cards (A2A-compatible JSON) — name, description, capabilities, endpoint, version
|
|
62
|
+
- MCP Server Cards — name, tools list, endpoint, transport
|
|
63
|
+
- Tool manifests — name, description, parameters, which agent/MCP server provides them
|
|
64
|
+
- Prompt entries — name, description, version, variables, template preview
|
|
65
|
+
|
|
66
|
+
**How registration works:**
|
|
67
|
+
- `fips-agents register` reads the current project type and metadata:
|
|
68
|
+
- Agent: reads `/.well-known/agent.json` from the running service (or generates from agent.yaml)
|
|
69
|
+
- MCP server: reads tool list from the running server (or from project structure)
|
|
70
|
+
- Prompts: reads from `prompts/` directory
|
|
71
|
+
- Pushes the metadata to the registry's API
|
|
72
|
+
- Registry stores it and makes it browsable
|
|
73
|
+
|
|
74
|
+
**UI:**
|
|
75
|
+
- Browse agents, MCP servers, tools, prompts in a web dashboard
|
|
76
|
+
- Search by name, capability, description
|
|
77
|
+
- View agent cards, tool schemas, prompt templates
|
|
78
|
+
- Show deployment status (healthy/unhealthy via health probes)
|
|
79
|
+
- Links to OpenShift console for the underlying deployments
|
|
80
|
+
|
|
81
|
+
**Tech stack:**
|
|
82
|
+
- Go server (consistent with gateway/UI templates) or Python FastAPI
|
|
83
|
+
- PostgreSQL for metadata storage
|
|
84
|
+
- OpenShift Route for the UI
|
|
85
|
+
- Helm chart for deployment
|
|
86
|
+
- Periodic health checks against registered endpoints
|
|
87
|
+
|
|
88
|
+
### Phase 2: Governance (later)
|
|
89
|
+
|
|
90
|
+
Add approval workflows, RBAC, and audit:
|
|
91
|
+
- Admin approval required before an agent/tool is visible to others
|
|
92
|
+
- Role-based access: who can register, who can discover, who can invoke
|
|
93
|
+
- Audit trail: who registered what, when, who accessed it
|
|
94
|
+
- Integration with OpenShift RBAC (ServiceAccounts, Roles)
|
|
95
|
+
- Keycloak/OIDC for auth (follow mcp-gateway-registry pattern)
|
|
96
|
+
|
|
97
|
+
### Phase 3: Enterprise tool/prompt catalog (distant)
|
|
98
|
+
|
|
99
|
+
- Curated enterprise tools that any agent can use (governed, versioned)
|
|
100
|
+
- Enterprise prompt library with approval workflows
|
|
101
|
+
- Agent RBAC: which agents can use which tools (policy-based)
|
|
102
|
+
- Integration with Red Hat's AI Hub / OpenShift AI catalog
|
|
103
|
+
|
|
104
|
+
## CLI Integration
|
|
105
|
+
|
|
106
|
+
```bash
|
|
107
|
+
# Deploy a registry
|
|
108
|
+
fips-agents create registry my-registry
|
|
109
|
+
cd my-registry && make deploy PROJECT=my-registry
|
|
110
|
+
|
|
111
|
+
# Register the thing you're working on
|
|
112
|
+
cd ../my-agent
|
|
113
|
+
fips-agents register # auto-detect project type, register with default registry
|
|
114
|
+
fips-agents register --registry my-registry # explicit registry
|
|
115
|
+
fips-agents register --type agent # force type
|
|
116
|
+
fips-agents register --type mcp-server
|
|
117
|
+
|
|
118
|
+
# Browse
|
|
119
|
+
fips-agents registry list # list all registered items
|
|
120
|
+
fips-agents registry list --type agent # filter by type
|
|
121
|
+
fips-agents registry search "web search" # semantic search
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
The `register` command could also be a post-deploy hook in the Makefile:
|
|
125
|
+
```makefile
|
|
126
|
+
deploy: ## Deploy to OpenShift and register
|
|
127
|
+
helm upgrade --install ...
|
|
128
|
+
fips-agents register --registry $(REGISTRY_URL)
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
## Open Questions
|
|
132
|
+
|
|
133
|
+
1. **Storage**: PostgreSQL vs CRDs? CRDs are more Kubernetes-native but harder to query. PostgreSQL is simpler for search and UI.
|
|
134
|
+
2. **Health monitoring**: Should the registry actively poll registered endpoints, or rely on passive registration updates?
|
|
135
|
+
3. **Scope**: Should the registry be namespace-scoped, cluster-scoped, or multi-cluster?
|
|
136
|
+
4. **Red Hat alignment**: How does this relate to Red Hat's planned MCP catalog in OpenShift AI? Complement or conflict?
|
|
137
|
+
5. **Standards**: Should agent cards be A2A-native, or a superset that includes MCP/tool/prompt metadata?
|
|
138
|
+
6. **Auth for registration**: How does `fips-agents register` authenticate with the registry? OpenShift token? API key?
|
|
139
|
+
|
|
140
|
+
## Relationship to Other Roadmap Items
|
|
141
|
+
|
|
142
|
+
- **HTTP mode** (Phase 1 of composable capabilities) must ship first — agents need `/.well-known/agent.json` to be registerable
|
|
143
|
+
- **A2A agent cards** are already in the gateway template — the registry reads these
|
|
144
|
+
- **MCP server template** already produces discoverable tools — the registry catalogs them
|
|
145
|
+
- **Multi-agent orchestration** benefits most from a registry — orchestrator agents can discover specialized agents dynamically
|
|
146
|
+
|
|
147
|
+
## References
|
|
148
|
+
|
|
149
|
+
- A2A Protocol: https://a2a-protocol.org/latest/specification/
|
|
150
|
+
- A2A Registry Discussion: https://github.com/a2aproject/A2A/discussions/741
|
|
151
|
+
- MCP Registry: https://registry.modelcontextprotocol.io/
|
|
152
|
+
- MCP 2026 Roadmap: https://blog.modelcontextprotocol.io/posts/2026-mcp-roadmap/
|
|
153
|
+
- mcp-gateway-registry: https://github.com/agentic-community/mcp-gateway-registry
|
|
154
|
+
- AWS Agent Registry: https://aws.amazon.com/blogs/machine-learning/the-future-of-managing-agents-at-scale-aws-agent-registry-now-in-preview/
|
|
155
|
+
- AGNTCY ACP Spec: https://github.com/agntcy/acp-spec
|
|
156
|
+
- kagent: https://kagent.dev/
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
# Composable Agent Capabilities — Planning
|
|
2
|
+
|
|
3
|
+
**Date:** 2026-04-10
|
|
4
|
+
**Status:** Discussion, not yet implemented
|
|
5
|
+
|
|
6
|
+
## Vision
|
|
7
|
+
|
|
8
|
+
The CLI evolves from "scaffold once" to "scaffold + compose." Agents start lean and gain capabilities through `add` commands. Each capability is a template fragment (files, deps, config) that the CLI layers into an existing project.
|
|
9
|
+
|
|
10
|
+
## Command Design
|
|
11
|
+
|
|
12
|
+
### Current commands
|
|
13
|
+
- `create agent|mcp-server|gateway|ui` — scaffold a new project
|
|
14
|
+
- `generate tool|resource|prompt|middleware` — add a single MCP component from Jinja2 template
|
|
15
|
+
|
|
16
|
+
### Proposed: `add` command
|
|
17
|
+
- `add http` — FastAPI server + health probes + agent card + uvicorn CMD
|
|
18
|
+
- `add tool <name>` — add a pre-built tool (web-search, code-executor, etc.)
|
|
19
|
+
- `add memory` — MemoryHub integration (config init, dependency, schema)
|
|
20
|
+
- `add rag` — RAG client (LlamaStack or equivalent connection, retrieval tool)
|
|
21
|
+
- `add sessions` — conversation state persistence (Redis/PostgreSQL)
|
|
22
|
+
- `add observability` — structured logging, metrics
|
|
23
|
+
|
|
24
|
+
### Command relationship
|
|
25
|
+
- `generate` creates a **single component file** from a Jinja2 template (MCP-oriented)
|
|
26
|
+
- `add` layers a **whole capability** (multiple files, dependencies, config, tests)
|
|
27
|
+
- `add tool` should detect project type (MCP server vs agent) and generate the right decorator/structure. This requires consistent tree structure across templates.
|
|
28
|
+
|
|
29
|
+
### Slash command relationship
|
|
30
|
+
- CLI `add` commands handle **structural changes** (files, deps, Containerfile)
|
|
31
|
+
- Slash commands handle **behavioral configuration** (agent.yaml tuning, prompt design, tool parameters)
|
|
32
|
+
- Example flow: `fips-agents add tool web-search` → `/configure-search` in Claude Code
|
|
33
|
+
|
|
34
|
+
## Capability Tiers
|
|
35
|
+
|
|
36
|
+
### Tier 1 — Almost every agent
|
|
37
|
+
1. **HTTP mode** — FastAPI, /v1/chat/completions, health probes, A2A agent card
|
|
38
|
+
2. **Web search** — Tavily/Brave with rate limiting
|
|
39
|
+
3. **Observability** — structured logging, optional Prometheus metrics
|
|
40
|
+
|
|
41
|
+
### Tier 2 — Common
|
|
42
|
+
4. **Memory** — MemoryHub integration (already partially wired in base_agent)
|
|
43
|
+
5. **Code execution** — sandboxed Python/shell via sidecar container
|
|
44
|
+
6. **RAG** — client-side connection to LlamaStack or equivalent (not rebuilding RAG infra)
|
|
45
|
+
7. **Sessions** — Redis/PostgreSQL conversation state
|
|
46
|
+
|
|
47
|
+
### Tier 3 — Specialized
|
|
48
|
+
8. **A2A discovery** — agent-to-agent calling, registry
|
|
49
|
+
9. **Auth** — OAuth2/OIDC middleware
|
|
50
|
+
10. **Multi-model routing** — cheap model for classification, expensive for generation
|
|
51
|
+
11. **File handling** — upload/download, temp storage
|
|
52
|
+
|
|
53
|
+
## Code Execution Design
|
|
54
|
+
|
|
55
|
+
Recommended: **sidecar container** approach.
|
|
56
|
+
- `add tool code-executor` adds the tool to the agent AND a sidecar to the Helm chart
|
|
57
|
+
- Agent sends code to sidecar via localhost HTTP
|
|
58
|
+
- Sidecar runs in a locked-down container (no network, resource limits, timeout)
|
|
59
|
+
- Stronger isolation than in-process subprocess, simpler than managing a separate MCP server
|
|
60
|
+
- Advanced path: MCP code-execution server for shared infrastructure
|
|
61
|
+
|
|
62
|
+
## RAG Design
|
|
63
|
+
|
|
64
|
+
Don't rebuild RAG — connect to it.
|
|
65
|
+
- LlamaStack provides vector store, embedding, retrieval out of the box
|
|
66
|
+
- `add rag` sets up the client side: config for the RAG endpoint, retrieval tool, ingestion tool
|
|
67
|
+
- The RAG infrastructure (LlamaStack, vLLM for embeddings, vector DB) is separate
|
|
68
|
+
- Agent template provides the wiring pattern, not the infrastructure
|
|
69
|
+
- This will likely need a full session to design and implement properly
|
|
70
|
+
|
|
71
|
+
## Multi-Agent Design
|
|
72
|
+
|
|
73
|
+
Building blocks already exist:
|
|
74
|
+
- Each agent has `/.well-known/agent.json` (A2A agent card)
|
|
75
|
+
- Gateway routes between agents
|
|
76
|
+
- UI connects to any OpenAI-compatible endpoint
|
|
77
|
+
|
|
78
|
+
Orchestration pattern:
|
|
79
|
+
- An "orchestrator" agent discovers other agents via their agent cards
|
|
80
|
+
- Delegates subtasks via HTTP to specialized agents
|
|
81
|
+
- Each agent is independently deployable and scalable
|
|
82
|
+
- Gateway provides the routing layer
|
|
83
|
+
|
|
84
|
+
This is the natural evolution of the current stack (agent + gateway + UI) into a multi-agent system. The `add a2a` command would wire up the discovery and calling patterns.
|
|
85
|
+
|
|
86
|
+
## Memory Design
|
|
87
|
+
|
|
88
|
+
MemoryHub integration is partially wired into base_agent already:
|
|
89
|
+
- `agent.yaml` has a `memory:` section pointing to `.memoryhub.yaml`
|
|
90
|
+
- `base_agent/memory.py` has `create_memory_client()` that falls back to NullMemoryClient
|
|
91
|
+
- `add memory` command would: install memoryhub dep, run `memoryhub config init`, offer `/configure-memory` slash command for schema design
|
|
92
|
+
|
|
93
|
+
This is a quick win — most of the framework code exists.
|
|
94
|
+
|
|
95
|
+
## Prioritization
|
|
96
|
+
|
|
97
|
+
### Phase 1: HTTP mode + `add` framework
|
|
98
|
+
- HTTP mode is the #1 blocker (every agent that needs a URL)
|
|
99
|
+
- Building the `add` infrastructure enables everything else
|
|
100
|
+
- Reference implementation: `demo-fips-agent-builder/src/server.py`
|
|
101
|
+
|
|
102
|
+
### Phase 2: Memory + web search as first `add` capabilities
|
|
103
|
+
- Memory (MemoryHub) is partially wired, quick to finish
|
|
104
|
+
- Web search validates the `add tool` pattern (we have a working Tavily implementation)
|
|
105
|
+
- These are two different shapes: memory is config/framework, web search is a tool file
|
|
106
|
+
|
|
107
|
+
### Phase 3: Code executor + RAG client
|
|
108
|
+
- Code executor validates the sidecar pattern (Helm chart changes)
|
|
109
|
+
- RAG client connects to LlamaStack (full session needed for design)
|
|
110
|
+
|
|
111
|
+
### Phase 4: Multi-agent orchestration
|
|
112
|
+
- A2A discovery and inter-agent calling
|
|
113
|
+
- Orchestrator pattern on top of the gateway
|
|
114
|
+
- Builds on HTTP mode foundation
|
|
115
|
+
|
|
116
|
+
## Open Questions
|
|
117
|
+
|
|
118
|
+
1. Should `add tool` auto-detect project type (MCP vs agent) or require explicit context?
|
|
119
|
+
2. Where do capability template fragments live — in the CLI package, or in the template repos?
|
|
120
|
+
3. How do we version capability fragments independently from the base templates?
|
|
121
|
+
4. For RAG: do we standardize on LlamaStack, or support multiple backends?
|
|
122
|
+
5. For multi-agent: does the gateway need to become aware of multiple backends, or is that a separate orchestration layer?
|
|
123
|
+
|
|
124
|
+
## Key Bug Found This Session
|
|
125
|
+
|
|
126
|
+
redhat-ai-americas/agent-template#19: The example agent doesn't append the assistant's tool_use message before tool_result messages, violating the Anthropic API contract. Must fix before HTTP mode ships, since it affects every agent using Anthropic.
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# Retrospective: Full Stack Integration and Agent Template Fixes
|
|
2
|
+
|
|
3
|
+
**Date:** 2026-04-10
|
|
4
|
+
**Effort:** Integration test UI → Gateway → Agent on OpenShift, fix all agent template bugs, close gateway/UI issues, release v0.5.1, build a working search agent, plan composable capabilities
|
|
5
|
+
**Issues closed:** gateway-template #1, #4, #5; ui-template #2, #5; agent-template 12 bugs (no issue tracker)
|
|
6
|
+
**Filed:** agent-template #19 (tool_use message ordering)
|
|
7
|
+
**Release:** v0.5.1 (PyPI)
|
|
8
|
+
**Commits:** 9748e0b..03927b7 (CLI), 4993c05..cc36289 (gateway), add7901..84ef204 (UI), 9efa650..4093298 (agent-template)
|
|
9
|
+
|
|
10
|
+
## What We Set Out To Do
|
|
11
|
+
|
|
12
|
+
1. Integration test the full stack (UI → Gateway → Agent) on OpenShift
|
|
13
|
+
2. Fix bugs found during testing
|
|
14
|
+
3. Close high-priority issues on gateway (#5 tests, #1 logging, #4 BuildConfig) and UI (#5 tests, #2 markdown)
|
|
15
|
+
4. Fix all 12 agent-template bugs from the gap analysis
|
|
16
|
+
5. Add HTTP mode to the agent template (stretch goal)
|
|
17
|
+
|
|
18
|
+
## What Changed
|
|
19
|
+
|
|
20
|
+
| Change | Type | Rationale |
|
|
21
|
+
|--------|------|-----------|
|
|
22
|
+
| Added reverse proxy to UI server | Good pivot | CORS issue discovered during integration — browser can't cross-origin fetch to gateway. Proxy is the correct architecture (keeps internal URLs internal). |
|
|
23
|
+
| HTTP mode deferred | Scope deferral | Enough shipped without it. Building `add` command framework first makes the feature composable rather than baked-in. |
|
|
24
|
+
| Composable capabilities planning | Good pivot | Search agent experience crystallized the vision — agents need layered capabilities, not monolithic templates. |
|
|
25
|
+
| Agent registry research | Good pivot | User-initiated strategic planning. AWS launched Agent Registry the same day — validated the concept. |
|
|
26
|
+
| v0.5.0 → v0.5.1 re-cut | Missed | Pre-existing Black formatting drift in two test files. Local `black --check` caught it but only on changed files; CI checks all files. |
|
|
27
|
+
|
|
28
|
+
## What Went Well
|
|
29
|
+
|
|
30
|
+
- **Full stack worked on first deploy** — agent, gateway, UI all running and streaming through three layers with no proxy/SSE bugs
|
|
31
|
+
- **Parallel agent execution** — gateway tests, UI tests, and markdown rendering all built concurrently. Agent-template Python fixes and infra fixes also ran in parallel. Significant time savings.
|
|
32
|
+
- **OpenShift BuildConfig** replaced ec2-dev remote builds cleanly — simpler, no external dependency
|
|
33
|
+
- **Search agent validated the scaffolding end-to-end** — `create agent` → customize → real Tavily + Anthropic → working agent in minutes
|
|
34
|
+
- **Bug fix thoroughness** — all 12 template bugs fixed, verified by separate review agent, 360 tests passing
|
|
35
|
+
- **Chat UI was surprisingly polished** — streaming, markdown rendering, responsive design all worked well in the browser
|
|
36
|
+
|
|
37
|
+
## Gaps Identified
|
|
38
|
+
|
|
39
|
+
| Gap | Severity | Resolution |
|
|
40
|
+
|-----|----------|------------|
|
|
41
|
+
| v0.5.0 CI failed (Black drift in test files we didn't touch) | Fixed | Committed formatting, re-cut as v0.5.1 |
|
|
42
|
+
| Tool_use/tool_result message ordering bug in example agent | Follow-up issue | agent-template#19 |
|
|
43
|
+
| No CI workflows on gateway-template or ui-template repos | Follow-up | Tests exist and pass locally but no GitHub Actions |
|
|
44
|
+
| `generate tool` vs `add tool` command overlap unresolved | Follow-up | Design captured in planning/composable-agent-capabilities.md |
|
|
45
|
+
| ResearchAssistant example is overcomplex for a starting point | Accept | Will simplify when HTTP mode ships |
|
|
46
|
+
|
|
47
|
+
## Action Items
|
|
48
|
+
|
|
49
|
+
- [ ] Fix agent-template#19 (tool_use ordering) — blocks Anthropic-powered agents
|
|
50
|
+
- [ ] Add CI workflows to gateway-template and ui-template repos
|
|
51
|
+
- [ ] Build HTTP mode and `add` command framework (next session priority)
|
|
52
|
+
- [ ] Add MemoryHub and web-search as first `add` capabilities
|
|
53
|
+
|
|
54
|
+
## Patterns
|
|
55
|
+
|
|
56
|
+
**Start:** Run `black --check src tests` (all files, not just changed) before cutting a release. The CI checks everything; local checks should match.
|
|
57
|
+
|
|
58
|
+
**Start:** When building agent step loops that use tool calling, always append the assistant message (with tool_calls) before appending tool results. This is an Anthropic API requirement and should be documented in the template.
|
|
59
|
+
|
|
60
|
+
**Continue:** Parallel sub-agent execution for independent work streams — consistently saves time with no coordination overhead.
|
|
61
|
+
|
|
62
|
+
**Continue:** OpenShift BuildConfig for builds — simpler than remote builds, no external infrastructure needed.
|
|
63
|
+
|
|
64
|
+
**Continue:** Deploying and testing the real stack on OpenShift rather than just running unit tests locally. The CORS issue, WORKDIR permissions, and tool_use ordering bug were all found only through integration testing.
|