vijil-sdk 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.
- vijil_sdk-0.0.1/PKG-INFO +224 -0
- vijil_sdk-0.0.1/README.md +208 -0
- vijil_sdk-0.0.1/pyproject.toml +61 -0
- vijil_sdk-0.0.1/src/vijil/__init__.py +6 -0
- vijil_sdk-0.0.1/src/vijil/_generated/__init__.py +0 -0
- vijil_sdk-0.0.1/src/vijil/_generated/models.py +2473 -0
- vijil_sdk-0.0.1/src/vijil/_generated/resources/__init__.py +0 -0
- vijil_sdk-0.0.1/src/vijil/_generated/resources/agents.py +236 -0
- vijil_sdk-0.0.1/src/vijil/_generated/resources/detections.py +31 -0
- vijil_sdk-0.0.1/src/vijil/_generated/resources/dome.py +89 -0
- vijil_sdk-0.0.1/src/vijil/_generated/resources/evaluations.py +99 -0
- vijil_sdk-0.0.1/src/vijil/_generated/resources/evolution_status.py +32 -0
- vijil_sdk-0.0.1/src/vijil/_generated/resources/evolutions.py +118 -0
- vijil_sdk-0.0.1/src/vijil/_generated/resources/genomes.py +116 -0
- vijil_sdk-0.0.1/src/vijil/_generated/resources/harnesses.py +89 -0
- vijil_sdk-0.0.1/src/vijil/_generated/resources/personas.py +133 -0
- vijil_sdk-0.0.1/src/vijil/_generated/resources/policies.py +165 -0
- vijil_sdk-0.0.1/src/vijil/_generated/resources/proposals.py +85 -0
- vijil_sdk-0.0.1/src/vijil/_generated/resources/rca_runs.py +61 -0
- vijil_sdk-0.0.1/src/vijil/_generated/resources/redteam.py +94 -0
- vijil_sdk-0.0.1/src/vijil/_generated/resources/standard_harnesses.py +30 -0
- vijil_sdk-0.0.1/src/vijil/_generated/resources/telemetry.py +125 -0
- vijil_sdk-0.0.1/src/vijil/_version.py +1 -0
- vijil_sdk-0.0.1/src/vijil/client.py +445 -0
- vijil_sdk-0.0.1/src/vijil/config.py +83 -0
- vijil_sdk-0.0.1/src/vijil/credentials.py +298 -0
- vijil_sdk-0.0.1/src/vijil/exceptions.py +183 -0
- vijil_sdk-0.0.1/src/vijil/http.py +509 -0
- vijil_sdk-0.0.1/src/vijil/local/__init__.py +65 -0
- vijil_sdk-0.0.1/src/vijil/local/_detection_client.py +352 -0
- vijil_sdk-0.0.1/src/vijil/local/_detection_types.py +173 -0
- vijil_sdk-0.0.1/src/vijil/local/adapter_registry.py +104 -0
- vijil_sdk-0.0.1/src/vijil/local/adapters/__init__.py +20 -0
- vijil_sdk-0.0.1/src/vijil/local/adapters/_subprocess.py +111 -0
- vijil_sdk-0.0.1/src/vijil/local/adapters/claude_code.py +115 -0
- vijil_sdk-0.0.1/src/vijil/local/adapters/openai_compat.py +146 -0
- vijil_sdk-0.0.1/src/vijil/local/adapters/openclaw.py +143 -0
- vijil_sdk-0.0.1/src/vijil/local/persistence.py +230 -0
- vijil_sdk-0.0.1/src/vijil/local/runner.py +282 -0
- vijil_sdk-0.0.1/src/vijil/local/types.py +201 -0
- vijil_sdk-0.0.1/src/vijil/models/__init__.py +43 -0
- vijil_sdk-0.0.1/src/vijil/models/agents.py +15 -0
- vijil_sdk-0.0.1/src/vijil/models/base.py +56 -0
- vijil_sdk-0.0.1/src/vijil/models/deploy.py +13 -0
- vijil_sdk-0.0.1/src/vijil/models/discover.py +12 -0
- vijil_sdk-0.0.1/src/vijil/models/dome.py +16 -0
- vijil_sdk-0.0.1/src/vijil/models/evaluations.py +53 -0
- vijil_sdk-0.0.1/src/vijil/models/genomes.py +28 -0
- vijil_sdk-0.0.1/src/vijil/models/harnesses.py +40 -0
- vijil_sdk-0.0.1/src/vijil/models/jobs.py +23 -0
- vijil_sdk-0.0.1/src/vijil/models/monitor.py +36 -0
- vijil_sdk-0.0.1/src/vijil/models/personas.py +14 -0
- vijil_sdk-0.0.1/src/vijil/models/policies.py +21 -0
- vijil_sdk-0.0.1/src/vijil/models/proposals.py +19 -0
- vijil_sdk-0.0.1/src/vijil/models/rca_runs.py +27 -0
- vijil_sdk-0.0.1/src/vijil/models/reports.py +13 -0
- vijil_sdk-0.0.1/src/vijil/models/scores.py +95 -0
- vijil_sdk-0.0.1/src/vijil/py.typed +0 -0
- vijil_sdk-0.0.1/src/vijil/resources/__init__.py +33 -0
- vijil_sdk-0.0.1/src/vijil/resources/agents.py +65 -0
- vijil_sdk-0.0.1/src/vijil/resources/base.py +12 -0
- vijil_sdk-0.0.1/src/vijil/resources/discover.py +50 -0
- vijil_sdk-0.0.1/src/vijil/resources/dome.py +52 -0
- vijil_sdk-0.0.1/src/vijil/resources/evaluations.py +122 -0
- vijil_sdk-0.0.1/src/vijil/resources/genomes.py +55 -0
- vijil_sdk-0.0.1/src/vijil/resources/harnesses.py +147 -0
- vijil_sdk-0.0.1/src/vijil/resources/jobs.py +59 -0
- vijil_sdk-0.0.1/src/vijil/resources/monitor.py +90 -0
- vijil_sdk-0.0.1/src/vijil/resources/personas.py +98 -0
- vijil_sdk-0.0.1/src/vijil/resources/policies.py +95 -0
- vijil_sdk-0.0.1/src/vijil/resources/proposals.py +56 -0
- vijil_sdk-0.0.1/src/vijil/resources/rca_runs.py +167 -0
- vijil_sdk-0.0.1/src/vijil/resources/reports.py +70 -0
- vijil_sdk-0.0.1/src/vijil/resources/scores.py +105 -0
- vijil_sdk-0.0.1/src/vijil_cli/__init__.py +1 -0
- vijil_sdk-0.0.1/src/vijil_cli/_generated/__init__.py +0 -0
- vijil_sdk-0.0.1/src/vijil_cli/auth.py +42 -0
- vijil_sdk-0.0.1/src/vijil_cli/config_cmd.py +37 -0
- vijil_sdk-0.0.1/src/vijil_cli/context.py +34 -0
- vijil_sdk-0.0.1/src/vijil_cli/main.py +123 -0
- vijil_sdk-0.0.1/src/vijil_cli/output.py +72 -0
- vijil_sdk-0.0.1/src/vijil_cli/plumbing/__init__.py +0 -0
- vijil_sdk-0.0.1/src/vijil_cli/plumbing/agents.py +73 -0
- vijil_sdk-0.0.1/src/vijil_cli/plumbing/evaluations.py +29 -0
- vijil_sdk-0.0.1/src/vijil_cli/plumbing/genomes.py +49 -0
- vijil_sdk-0.0.1/src/vijil_cli/plumbing/harnesses.py +89 -0
- vijil_sdk-0.0.1/src/vijil_cli/plumbing/jobs.py +43 -0
- vijil_sdk-0.0.1/src/vijil_cli/plumbing/personas.py +102 -0
- vijil_sdk-0.0.1/src/vijil_cli/plumbing/policies.py +94 -0
- vijil_sdk-0.0.1/src/vijil_cli/plumbing/proposals.py +60 -0
- vijil_sdk-0.0.1/src/vijil_cli/plumbing/rca_runs.py +129 -0
- vijil_sdk-0.0.1/src/vijil_cli/plumbing/reports.py +44 -0
- vijil_sdk-0.0.1/src/vijil_cli/plumbing/scores.py +27 -0
- vijil_sdk-0.0.1/src/vijil_cli/porcelain/__init__.py +0 -0
- vijil_sdk-0.0.1/src/vijil_cli/porcelain/adapt.py +36 -0
- vijil_sdk-0.0.1/src/vijil_cli/porcelain/deploy.py +27 -0
- vijil_sdk-0.0.1/src/vijil_cli/porcelain/discover.py +29 -0
- vijil_sdk-0.0.1/src/vijil_cli/porcelain/evaluate.py +182 -0
- vijil_sdk-0.0.1/src/vijil_cli/porcelain/evolve.py +31 -0
- vijil_sdk-0.0.1/src/vijil_cli/porcelain/monitor.py +33 -0
- vijil_sdk-0.0.1/src/vijil_cli/porcelain/protect.py +27 -0
- vijil_sdk-0.0.1/src/vijil_cli/porcelain/register.py +368 -0
- vijil_sdk-0.0.1/src/vijil_cli/porcelain/test_cmd.py +70 -0
- vijil_sdk-0.0.1/src/vijil_cli/state.py +18 -0
vijil_sdk-0.0.1/PKG-INFO
ADDED
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: vijil-sdk
|
|
3
|
+
Version: 0.0.1
|
|
4
|
+
Summary: Vijil SDK & CLI — measure and improve AI agent trustworthiness
|
|
5
|
+
Author: Vijil AI
|
|
6
|
+
Author-email: eng@vijil.ai
|
|
7
|
+
Requires-Python: >=3.12,<3.14
|
|
8
|
+
Classifier: Programming Language :: Python :: 3
|
|
9
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
10
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
11
|
+
Requires-Dist: httpx (>=0.27.0)
|
|
12
|
+
Requires-Dist: pydantic (>=2.10.0,<3.0.0)
|
|
13
|
+
Requires-Dist: tomli-w (>=1.1.0,<2.0.0)
|
|
14
|
+
Description-Content-Type: text/markdown
|
|
15
|
+
|
|
16
|
+
# Vijil SDK & CLI
|
|
17
|
+
|
|
18
|
+
Measure and improve AI agent trustworthiness from your terminal or Python code.
|
|
19
|
+
|
|
20
|
+
Vijil provides a unified trust layer for the entire agent lifecycle — from discovery through deployment. Evaluate your agent against known standards, test it under adversarial pressure, adapt it to fix weaknesses, and protect it with runtime Guardrails.
|
|
21
|
+
|
|
22
|
+
## Install
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
pip install vijil-sdk
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
Requires Python 3.12+. Installs both the `vijil` CLI and the `vijil` Python SDK.
|
|
29
|
+
|
|
30
|
+
**Using Vijil from Claude Desktop, Cursor, or other MCP-aware agent frameworks?** See [`vijil-mcp`](https://github.com/vijilAI/vijil-mcp) — a separate package that exposes the Vijil platform as MCP tools. The SDK and the MCP server are independent: `vijil-sdk` runs in your Python process; `vijil-mcp` runs as a stdio server attached to your agent framework.
|
|
31
|
+
|
|
32
|
+
**Migrating from the legacy `vijil` PyPI package (pre-2026)?** See [`docs/migration-from-legacy-vijil.md`](docs/migration-from-legacy-vijil.md) for the install change, auth flow change, and command-by-command map.
|
|
33
|
+
|
|
34
|
+
## Authenticate
|
|
35
|
+
|
|
36
|
+
Create an API key at [console.vijil.ai](https://console.vijil.ai) > **Settings** > **API Keys** — a client ID (`vk_…`) plus a one-time secret. Export the pair; the SDK exchanges it for a short-lived access token automatically:
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
export VIJIL_CLIENT_ID="vk_..."
|
|
40
|
+
export VIJIL_CLIENT_SECRET="..." # shown once at creation
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
Already have a bearer access token? Use it directly instead — `vijil auth login` saves one, or set it in the environment:
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
vijil auth login # paste an access token; saved to ~/.vijil/credentials.json
|
|
47
|
+
export VIJIL_API_KEY="<access-token>"
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## Quick start: CLI
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
# Evaluate against standard trust Harnesses
|
|
54
|
+
vijil evaluate <agent-id> --baseline
|
|
55
|
+
|
|
56
|
+
# Test under adversarial pressure (Swarm)
|
|
57
|
+
vijil test <agent-id> --adaptive
|
|
58
|
+
|
|
59
|
+
# View trust scores
|
|
60
|
+
vijil scores show <agent-id>
|
|
61
|
+
|
|
62
|
+
# Configure runtime Guardrails
|
|
63
|
+
vijil protect <agent-id> --guards prompt_injection,pii --mode enforce
|
|
64
|
+
|
|
65
|
+
# Improve the agent through corrective evolution
|
|
66
|
+
vijil adapt <agent-id> --mode config
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
## Quick start: SDK
|
|
70
|
+
|
|
71
|
+
```python
|
|
72
|
+
from vijil import Vijil
|
|
73
|
+
|
|
74
|
+
client = Vijil()
|
|
75
|
+
|
|
76
|
+
# Evaluate and wait for results
|
|
77
|
+
evaluation = client.evaluate("my-agent", baseline=True)
|
|
78
|
+
print(f"Trust score: {evaluation.trust_score}")
|
|
79
|
+
print(f"Reliability: {evaluation.dimensions.reliability}")
|
|
80
|
+
print(f"Security: {evaluation.dimensions.security}")
|
|
81
|
+
print(f"Safety: {evaluation.dimensions.safety}")
|
|
82
|
+
|
|
83
|
+
# Test under adversarial pressure
|
|
84
|
+
job = client.test("my-agent", mode="adaptive")
|
|
85
|
+
print(f"Test status: {job.status}")
|
|
86
|
+
|
|
87
|
+
# Configure Guardrails
|
|
88
|
+
dome = client.protect("my-agent", guards=["prompt_injection", "pii"])
|
|
89
|
+
|
|
90
|
+
# Improve the agent
|
|
91
|
+
job = client.adapt("my-agent", mode="config")
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
## How it works
|
|
95
|
+
|
|
96
|
+
The CLI and SDK are organized into two tiers, inspired by Git:
|
|
97
|
+
|
|
98
|
+
### Porcelain commands (lifecycle verbs)
|
|
99
|
+
|
|
100
|
+
High-level commands that map to stages of the agent trust lifecycle:
|
|
101
|
+
|
|
102
|
+
| Command | What it does |
|
|
103
|
+
|---------|-------------|
|
|
104
|
+
| `vijil discover` | Find agents in GitHub repos or cloud infrastructure |
|
|
105
|
+
| `vijil register` | Convert agent source into an A2A card and genome |
|
|
106
|
+
| `vijil evaluate` | Measure against known standards (criterion-referenced) |
|
|
107
|
+
| `vijil test` | Explore under adversarial pressure (Swarm) |
|
|
108
|
+
| `vijil adapt` | Improve through corrective evolution (prompt, config, code, Dome) |
|
|
109
|
+
| `vijil protect` | Configure Dome runtime Guardrails |
|
|
110
|
+
| `vijil monitor` | View Dome telemetry (detections, traces, logs) |
|
|
111
|
+
| `vijil evolve` | Create a new agent through generative evolution |
|
|
112
|
+
| `vijil deploy` | Deploy to a production runtime |
|
|
113
|
+
|
|
114
|
+
### Plumbing commands (resource nouns)
|
|
115
|
+
|
|
116
|
+
Low-level CRUD operations on platform resources:
|
|
117
|
+
|
|
118
|
+
| Command | Subcommands |
|
|
119
|
+
|---------|------------|
|
|
120
|
+
| `vijil agents` | `list`, `show`, `create`, `update`, `delete` |
|
|
121
|
+
| `vijil evaluations` | `list`, `show` |
|
|
122
|
+
| `vijil harnesses` | `list`, `show`, `create`, `update` |
|
|
123
|
+
| `vijil genomes` | `list`, `show`, `diff`, `history` |
|
|
124
|
+
| `vijil jobs` | `list`, `status`, `cancel` |
|
|
125
|
+
| `vijil scores` | `show`, `history` |
|
|
126
|
+
| `vijil reports` | `list`, `show`, `download` |
|
|
127
|
+
| `vijil proposals` | `list`, `show`, `approve`, `apply`, `reject` |
|
|
128
|
+
| `vijil policies` | `list`, `show`, `create`, `update`, `delete` |
|
|
129
|
+
| `vijil personas` | `list`, `show`, `create`, `update`, `delete` |
|
|
130
|
+
|
|
131
|
+
### Setup commands
|
|
132
|
+
|
|
133
|
+
| Command | What it does |
|
|
134
|
+
|---------|-------------|
|
|
135
|
+
| `vijil auth` | `login`, `logout`, `status` |
|
|
136
|
+
| `vijil config` | `show`, `get`, `set` |
|
|
137
|
+
|
|
138
|
+
## Key concepts
|
|
139
|
+
|
|
140
|
+
**Evaluate vs Test**: `evaluate` measures against known standards (like a certification exam). `test` explores for unknown weaknesses through adversarial pressure (like a penetration test). Both produce trust scores.
|
|
141
|
+
|
|
142
|
+
**Adapt vs Evolve**: `adapt` improves an existing agent through corrective evolution, fixing weaknesses found by evaluation or testing. `evolve` creates an entirely new agent from a spec or natural-language description.
|
|
143
|
+
|
|
144
|
+
**Trust dimensions**: Every evaluation produces scores across three dimensions — **reliability** (does it work correctly?), **security** (can it resist exploitation?), and **safety** (does it behave responsibly?).
|
|
145
|
+
|
|
146
|
+
## Global options
|
|
147
|
+
|
|
148
|
+
```
|
|
149
|
+
--output, -o Output format: table, json, yaml, quiet (default: auto)
|
|
150
|
+
--gateway Gateway URL override
|
|
151
|
+
--api-key API key override (or set VIJIL_API_KEY)
|
|
152
|
+
--quiet, -q Quiet mode — IDs only
|
|
153
|
+
--verbose, -v Debug logging
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
## Shell composability
|
|
157
|
+
|
|
158
|
+
The CLI supports shell scripting:
|
|
159
|
+
|
|
160
|
+
```bash
|
|
161
|
+
# JSON output for machine consumption
|
|
162
|
+
vijil evaluate my-agent --baseline -o json | jq '.trust_score'
|
|
163
|
+
|
|
164
|
+
# Quiet mode returns just the ID
|
|
165
|
+
EVAL_ID=$(vijil evaluate my-agent --baseline -q)
|
|
166
|
+
vijil reports download "$EVAL_ID"
|
|
167
|
+
|
|
168
|
+
# Pipe agent list to evaluation
|
|
169
|
+
vijil agents list -q | xargs -I{} vijil evaluate {} --baseline --no-wait
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
Exit codes follow Unix convention:
|
|
173
|
+
|
|
174
|
+
| Code | Meaning |
|
|
175
|
+
|------|---------|
|
|
176
|
+
| 0 | Success |
|
|
177
|
+
| 1 | General error |
|
|
178
|
+
| 2 | Authentication error |
|
|
179
|
+
| 3 | Resource not found |
|
|
180
|
+
| 4 | Validation error |
|
|
181
|
+
| 5 | Job failed |
|
|
182
|
+
|
|
183
|
+
## Agent aliases
|
|
184
|
+
|
|
185
|
+
Set short names for agent IDs you use often:
|
|
186
|
+
|
|
187
|
+
```bash
|
|
188
|
+
vijil config set aliases.travel-agent d0087de1-a032-49f7-9d28-3abf4a34404d
|
|
189
|
+
|
|
190
|
+
# Now use the alias anywhere
|
|
191
|
+
vijil evaluate travel-agent --baseline
|
|
192
|
+
vijil scores show travel-agent
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
## Framework integrations
|
|
196
|
+
|
|
197
|
+
> **Coming soon** — Guides for integrating Vijil into agent development frameworks:
|
|
198
|
+
>
|
|
199
|
+
> - **Google ADK** — Evaluate and protect ADK agents
|
|
200
|
+
> - **LangGraph** — Add trust checks to LangGraph workflows
|
|
201
|
+
> - **CrewAI** — Monitor and adapt CrewAI agents
|
|
202
|
+
>
|
|
203
|
+
> See [docs/integrations/](docs/integrations/) for the roadmap.
|
|
204
|
+
|
|
205
|
+
## Documentation
|
|
206
|
+
|
|
207
|
+
| Document | Description |
|
|
208
|
+
|----------|-------------|
|
|
209
|
+
| [Configuration](docs/configuration.md) | Auth setup, config file, credentials, CI/CD |
|
|
210
|
+
| [CLI Reference](docs/cli-reference.md) | All commands with flags and examples |
|
|
211
|
+
| [SDK Reference](docs/sdk-reference.md) | Python client, resources, models, errors |
|
|
212
|
+
| [Lifecycle Guide](docs/lifecycle-guide.md) | End-to-end workflows for existing and new agents |
|
|
213
|
+
| [Testing Guide](docs/testing-guide.md) | Running unit and integration tests |
|
|
214
|
+
| [Integrations](docs/integrations/) | Framework integration guides |
|
|
215
|
+
|
|
216
|
+
## Requirements
|
|
217
|
+
|
|
218
|
+
- Python 3.12+
|
|
219
|
+
- A Vijil account ([console.vijil.ai](https://console.vijil.ai))
|
|
220
|
+
|
|
221
|
+
## License
|
|
222
|
+
|
|
223
|
+
Proprietary. Copyright 2024-2026 Vijil AI, Inc.
|
|
224
|
+
|
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
# Vijil SDK & CLI
|
|
2
|
+
|
|
3
|
+
Measure and improve AI agent trustworthiness from your terminal or Python code.
|
|
4
|
+
|
|
5
|
+
Vijil provides a unified trust layer for the entire agent lifecycle — from discovery through deployment. Evaluate your agent against known standards, test it under adversarial pressure, adapt it to fix weaknesses, and protect it with runtime Guardrails.
|
|
6
|
+
|
|
7
|
+
## Install
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
pip install vijil-sdk
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
Requires Python 3.12+. Installs both the `vijil` CLI and the `vijil` Python SDK.
|
|
14
|
+
|
|
15
|
+
**Using Vijil from Claude Desktop, Cursor, or other MCP-aware agent frameworks?** See [`vijil-mcp`](https://github.com/vijilAI/vijil-mcp) — a separate package that exposes the Vijil platform as MCP tools. The SDK and the MCP server are independent: `vijil-sdk` runs in your Python process; `vijil-mcp` runs as a stdio server attached to your agent framework.
|
|
16
|
+
|
|
17
|
+
**Migrating from the legacy `vijil` PyPI package (pre-2026)?** See [`docs/migration-from-legacy-vijil.md`](docs/migration-from-legacy-vijil.md) for the install change, auth flow change, and command-by-command map.
|
|
18
|
+
|
|
19
|
+
## Authenticate
|
|
20
|
+
|
|
21
|
+
Create an API key at [console.vijil.ai](https://console.vijil.ai) > **Settings** > **API Keys** — a client ID (`vk_…`) plus a one-time secret. Export the pair; the SDK exchanges it for a short-lived access token automatically:
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
export VIJIL_CLIENT_ID="vk_..."
|
|
25
|
+
export VIJIL_CLIENT_SECRET="..." # shown once at creation
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
Already have a bearer access token? Use it directly instead — `vijil auth login` saves one, or set it in the environment:
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
vijil auth login # paste an access token; saved to ~/.vijil/credentials.json
|
|
32
|
+
export VIJIL_API_KEY="<access-token>"
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## Quick start: CLI
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
# Evaluate against standard trust Harnesses
|
|
39
|
+
vijil evaluate <agent-id> --baseline
|
|
40
|
+
|
|
41
|
+
# Test under adversarial pressure (Swarm)
|
|
42
|
+
vijil test <agent-id> --adaptive
|
|
43
|
+
|
|
44
|
+
# View trust scores
|
|
45
|
+
vijil scores show <agent-id>
|
|
46
|
+
|
|
47
|
+
# Configure runtime Guardrails
|
|
48
|
+
vijil protect <agent-id> --guards prompt_injection,pii --mode enforce
|
|
49
|
+
|
|
50
|
+
# Improve the agent through corrective evolution
|
|
51
|
+
vijil adapt <agent-id> --mode config
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## Quick start: SDK
|
|
55
|
+
|
|
56
|
+
```python
|
|
57
|
+
from vijil import Vijil
|
|
58
|
+
|
|
59
|
+
client = Vijil()
|
|
60
|
+
|
|
61
|
+
# Evaluate and wait for results
|
|
62
|
+
evaluation = client.evaluate("my-agent", baseline=True)
|
|
63
|
+
print(f"Trust score: {evaluation.trust_score}")
|
|
64
|
+
print(f"Reliability: {evaluation.dimensions.reliability}")
|
|
65
|
+
print(f"Security: {evaluation.dimensions.security}")
|
|
66
|
+
print(f"Safety: {evaluation.dimensions.safety}")
|
|
67
|
+
|
|
68
|
+
# Test under adversarial pressure
|
|
69
|
+
job = client.test("my-agent", mode="adaptive")
|
|
70
|
+
print(f"Test status: {job.status}")
|
|
71
|
+
|
|
72
|
+
# Configure Guardrails
|
|
73
|
+
dome = client.protect("my-agent", guards=["prompt_injection", "pii"])
|
|
74
|
+
|
|
75
|
+
# Improve the agent
|
|
76
|
+
job = client.adapt("my-agent", mode="config")
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
## How it works
|
|
80
|
+
|
|
81
|
+
The CLI and SDK are organized into two tiers, inspired by Git:
|
|
82
|
+
|
|
83
|
+
### Porcelain commands (lifecycle verbs)
|
|
84
|
+
|
|
85
|
+
High-level commands that map to stages of the agent trust lifecycle:
|
|
86
|
+
|
|
87
|
+
| Command | What it does |
|
|
88
|
+
|---------|-------------|
|
|
89
|
+
| `vijil discover` | Find agents in GitHub repos or cloud infrastructure |
|
|
90
|
+
| `vijil register` | Convert agent source into an A2A card and genome |
|
|
91
|
+
| `vijil evaluate` | Measure against known standards (criterion-referenced) |
|
|
92
|
+
| `vijil test` | Explore under adversarial pressure (Swarm) |
|
|
93
|
+
| `vijil adapt` | Improve through corrective evolution (prompt, config, code, Dome) |
|
|
94
|
+
| `vijil protect` | Configure Dome runtime Guardrails |
|
|
95
|
+
| `vijil monitor` | View Dome telemetry (detections, traces, logs) |
|
|
96
|
+
| `vijil evolve` | Create a new agent through generative evolution |
|
|
97
|
+
| `vijil deploy` | Deploy to a production runtime |
|
|
98
|
+
|
|
99
|
+
### Plumbing commands (resource nouns)
|
|
100
|
+
|
|
101
|
+
Low-level CRUD operations on platform resources:
|
|
102
|
+
|
|
103
|
+
| Command | Subcommands |
|
|
104
|
+
|---------|------------|
|
|
105
|
+
| `vijil agents` | `list`, `show`, `create`, `update`, `delete` |
|
|
106
|
+
| `vijil evaluations` | `list`, `show` |
|
|
107
|
+
| `vijil harnesses` | `list`, `show`, `create`, `update` |
|
|
108
|
+
| `vijil genomes` | `list`, `show`, `diff`, `history` |
|
|
109
|
+
| `vijil jobs` | `list`, `status`, `cancel` |
|
|
110
|
+
| `vijil scores` | `show`, `history` |
|
|
111
|
+
| `vijil reports` | `list`, `show`, `download` |
|
|
112
|
+
| `vijil proposals` | `list`, `show`, `approve`, `apply`, `reject` |
|
|
113
|
+
| `vijil policies` | `list`, `show`, `create`, `update`, `delete` |
|
|
114
|
+
| `vijil personas` | `list`, `show`, `create`, `update`, `delete` |
|
|
115
|
+
|
|
116
|
+
### Setup commands
|
|
117
|
+
|
|
118
|
+
| Command | What it does |
|
|
119
|
+
|---------|-------------|
|
|
120
|
+
| `vijil auth` | `login`, `logout`, `status` |
|
|
121
|
+
| `vijil config` | `show`, `get`, `set` |
|
|
122
|
+
|
|
123
|
+
## Key concepts
|
|
124
|
+
|
|
125
|
+
**Evaluate vs Test**: `evaluate` measures against known standards (like a certification exam). `test` explores for unknown weaknesses through adversarial pressure (like a penetration test). Both produce trust scores.
|
|
126
|
+
|
|
127
|
+
**Adapt vs Evolve**: `adapt` improves an existing agent through corrective evolution, fixing weaknesses found by evaluation or testing. `evolve` creates an entirely new agent from a spec or natural-language description.
|
|
128
|
+
|
|
129
|
+
**Trust dimensions**: Every evaluation produces scores across three dimensions — **reliability** (does it work correctly?), **security** (can it resist exploitation?), and **safety** (does it behave responsibly?).
|
|
130
|
+
|
|
131
|
+
## Global options
|
|
132
|
+
|
|
133
|
+
```
|
|
134
|
+
--output, -o Output format: table, json, yaml, quiet (default: auto)
|
|
135
|
+
--gateway Gateway URL override
|
|
136
|
+
--api-key API key override (or set VIJIL_API_KEY)
|
|
137
|
+
--quiet, -q Quiet mode — IDs only
|
|
138
|
+
--verbose, -v Debug logging
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
## Shell composability
|
|
142
|
+
|
|
143
|
+
The CLI supports shell scripting:
|
|
144
|
+
|
|
145
|
+
```bash
|
|
146
|
+
# JSON output for machine consumption
|
|
147
|
+
vijil evaluate my-agent --baseline -o json | jq '.trust_score'
|
|
148
|
+
|
|
149
|
+
# Quiet mode returns just the ID
|
|
150
|
+
EVAL_ID=$(vijil evaluate my-agent --baseline -q)
|
|
151
|
+
vijil reports download "$EVAL_ID"
|
|
152
|
+
|
|
153
|
+
# Pipe agent list to evaluation
|
|
154
|
+
vijil agents list -q | xargs -I{} vijil evaluate {} --baseline --no-wait
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
Exit codes follow Unix convention:
|
|
158
|
+
|
|
159
|
+
| Code | Meaning |
|
|
160
|
+
|------|---------|
|
|
161
|
+
| 0 | Success |
|
|
162
|
+
| 1 | General error |
|
|
163
|
+
| 2 | Authentication error |
|
|
164
|
+
| 3 | Resource not found |
|
|
165
|
+
| 4 | Validation error |
|
|
166
|
+
| 5 | Job failed |
|
|
167
|
+
|
|
168
|
+
## Agent aliases
|
|
169
|
+
|
|
170
|
+
Set short names for agent IDs you use often:
|
|
171
|
+
|
|
172
|
+
```bash
|
|
173
|
+
vijil config set aliases.travel-agent d0087de1-a032-49f7-9d28-3abf4a34404d
|
|
174
|
+
|
|
175
|
+
# Now use the alias anywhere
|
|
176
|
+
vijil evaluate travel-agent --baseline
|
|
177
|
+
vijil scores show travel-agent
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
## Framework integrations
|
|
181
|
+
|
|
182
|
+
> **Coming soon** — Guides for integrating Vijil into agent development frameworks:
|
|
183
|
+
>
|
|
184
|
+
> - **Google ADK** — Evaluate and protect ADK agents
|
|
185
|
+
> - **LangGraph** — Add trust checks to LangGraph workflows
|
|
186
|
+
> - **CrewAI** — Monitor and adapt CrewAI agents
|
|
187
|
+
>
|
|
188
|
+
> See [docs/integrations/](docs/integrations/) for the roadmap.
|
|
189
|
+
|
|
190
|
+
## Documentation
|
|
191
|
+
|
|
192
|
+
| Document | Description |
|
|
193
|
+
|----------|-------------|
|
|
194
|
+
| [Configuration](docs/configuration.md) | Auth setup, config file, credentials, CI/CD |
|
|
195
|
+
| [CLI Reference](docs/cli-reference.md) | All commands with flags and examples |
|
|
196
|
+
| [SDK Reference](docs/sdk-reference.md) | Python client, resources, models, errors |
|
|
197
|
+
| [Lifecycle Guide](docs/lifecycle-guide.md) | End-to-end workflows for existing and new agents |
|
|
198
|
+
| [Testing Guide](docs/testing-guide.md) | Running unit and integration tests |
|
|
199
|
+
| [Integrations](docs/integrations/) | Framework integration guides |
|
|
200
|
+
|
|
201
|
+
## Requirements
|
|
202
|
+
|
|
203
|
+
- Python 3.12+
|
|
204
|
+
- A Vijil account ([console.vijil.ai](https://console.vijil.ai))
|
|
205
|
+
|
|
206
|
+
## License
|
|
207
|
+
|
|
208
|
+
Proprietary. Copyright 2024-2026 Vijil AI, Inc.
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
[tool.poetry]
|
|
2
|
+
name = "vijil-sdk"
|
|
3
|
+
version = "0.0.1"
|
|
4
|
+
description = "Vijil SDK & CLI — measure and improve AI agent trustworthiness"
|
|
5
|
+
authors = ["Vijil AI <eng@vijil.ai>"]
|
|
6
|
+
readme = "README.md"
|
|
7
|
+
packages = [
|
|
8
|
+
{include = "vijil", from = "src"},
|
|
9
|
+
{include = "vijil_cli", from = "src"},
|
|
10
|
+
]
|
|
11
|
+
|
|
12
|
+
[tool.poetry.dependencies]
|
|
13
|
+
python = ">=3.12,<3.14"
|
|
14
|
+
httpx = ">=0.27.0"
|
|
15
|
+
pydantic = "^2.10.0"
|
|
16
|
+
tomli-w = "^1.1.0"
|
|
17
|
+
|
|
18
|
+
[tool.poetry.group.cli.dependencies]
|
|
19
|
+
typer = {version = ">=0.15.0", extras = ["all"]}
|
|
20
|
+
rich = ">=13.0.0"
|
|
21
|
+
|
|
22
|
+
[tool.poetry.group.dev.dependencies]
|
|
23
|
+
pytest = "^8.0.0"
|
|
24
|
+
pytest-asyncio = ">=0.24.0"
|
|
25
|
+
respx = ">=0.22.0"
|
|
26
|
+
ruff = "^0.8.0"
|
|
27
|
+
mypy = "^1.13.0"
|
|
28
|
+
python-dotenv = "^1.2.2"
|
|
29
|
+
jupyterlab = "^4.5.7"
|
|
30
|
+
pandas = "^3.0.3"
|
|
31
|
+
matplotlib = "^3.10.0"
|
|
32
|
+
nbstripout = "^0.9.1"
|
|
33
|
+
|
|
34
|
+
[tool.poetry.scripts]
|
|
35
|
+
vijil = "vijil_cli.main:app"
|
|
36
|
+
|
|
37
|
+
[build-system]
|
|
38
|
+
requires = ["poetry-core"]
|
|
39
|
+
build-backend = "poetry.core.masonry.api"
|
|
40
|
+
|
|
41
|
+
[tool.ruff]
|
|
42
|
+
line-length = 100
|
|
43
|
+
target-version = "py312"
|
|
44
|
+
# Example scripts and deployment helpers are not held to the same lint
|
|
45
|
+
# standard as production code under src/, tests/, and scripts/. They
|
|
46
|
+
# illustrate usage and drift is expected as APIs evolve.
|
|
47
|
+
extend-exclude = []
|
|
48
|
+
|
|
49
|
+
[tool.ruff.lint]
|
|
50
|
+
select = ["E", "F", "I", "N", "W", "UP"]
|
|
51
|
+
ignore = ["E501"]
|
|
52
|
+
|
|
53
|
+
[tool.mypy]
|
|
54
|
+
python_version = "3.12"
|
|
55
|
+
strict = true
|
|
56
|
+
plugins = ["pydantic.mypy"]
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
[tool.pytest.ini_options]
|
|
60
|
+
asyncio_mode = "auto"
|
|
61
|
+
testpaths = ["tests"]
|
|
File without changes
|