DEVI Agent Capabilities¶
Early access
DEVI is in beta and free for every workspace. You bring your own provider key, and your provider bills the requests. Answers are grounded in supplied scan evidence and the shipped documentation and may still be incomplete. DEVI never executes or approves infrastructure changes.
DEVI is not a chatbot. It has 14 MCP tools that can create files, compile plugins, save policies, and trigger remediations: all with your confirmation first.
How to Access DEVI¶
DEVI runs inside the CloudSlash daemon and is accessed via:
- Web Dashboard → the AI chat panel at
https://app.cloudslash.dev(or your deployed URL) - TUI → the DEVI tab in the terminal dashboard
- API →
POST /api/v1/ai/chaton the daemon
DEVI is not a CLI command. It is an interactive agent that responds to natural language through the dashboard interface.
Architecture¶
graph TD
User[User via Web Dashboard / TUI] -->|natural language| API[POST /api/v1/ai/chat]
API --> Loop[ReAct Agent Loop]
Loop -->|tool calls| MCP[MCP Server: 14 Tools]
MCP -->|read| Graph[Universal Graph]
MCP -->|write| FS[File System: sandboxed]
MCP -->|event| SAU[S.A.U. Quarantine]
MCP -->|predict| Oracle[Oracle HMM Engine]
MCP -->|attribute| Rosetta[Rosetta Provenance]
Loop -->|LLM| Provider[BYOK: OpenAI / Anthropic / Gemini / Ollama]
MCP Tools¶
Available (14 Total)
Analysis Tools¶
No Confirmation Required
| Tool | Description |
|---|---|
query_graph |
Query the Universal Graph for specific resources by provider, type, or waste flag |
get_financial_ledger |
Retrieve total waste count and projected monthly savings |
get_taxonomy_schema |
Get available CEL variables and types for policy authoring |
simulate_policy |
Dry-run a CEL policy against the live graph: shows match count and sample CRNs |
get_resource_provenance |
Trace a resource back to the Terraform code + git commit that created it (Rosetta Engine) |
run_oracle_simulation |
Predict Spot Instance interruption probability via HMM Viterbi (Oracle Engine) |
force_state_sync |
Trigger immediate reconciliation scan of live cloud state |
Action Tools¶
Human Confirmation Required
| Tool | Description | Confirmation |
|---|---|---|
request_quarantine |
Submit a resource for S.A.U. quarantine: blocks until human approves | S.A.U. HITL |
update_configuration |
Hot-reload CloudSlash config (AI model, cloud settings, pricing) | Via Horizon |
install_plugin |
Download + verify + hot-load a plugin from the community registry | S.A.U. checkpoint |
generate_plugin |
LLM generates a complete plugin from a description, saves to disk | No |
build_plugin |
Compiles a generated plugin via go build |
Always asks user |
save_policy |
Writes a CEL policy to a .cel.yaml file |
Always asks user |
write_file |
Creates any file within .cloudslash/ directories (sandboxed) |
Always asks user |
Usage Examples¶
All interactions happen through the Web Dashboard chat panel or the TUI DEVI tab.
Generate a Plugin¶
You: Create a plugin that scans Hetzner Cloud servers and floating IPs
DEVI: I'll create a Hetzner Cloud scanner plugin for you.
[Calling generate_plugin with name="hetzner", description="Scan servers and floating IPs"]
✅ Plugin generated and saved:
• Path: ~/.cloudslash/plugins/src/cloudslash-plugin-hetzner/main.go
• Source: LLM-generated with Hetzner Go SDK
• Checksum: a1b2c3d4e5f6...
Would you like me to build it?
You: Yes
DEVI: [Calling build_plugin with name="hetzner"]
✅ Built successfully:
• Binary: ~/.cloudslash/plugins/cloudslash-plugin-hetzner
• Platform: darwin/arm64
Save a Policy¶
You: Block any instance that costs more than $500/month
DEVI: Let me test that policy first.
[Calling simulate_policy with condition="cost > 500.0", action="block"]
Results:
• Matches: 3 resources
• Sample CRNs: crn:aws:us-east-1:...:instance:i-0abc, ...
This would block 3 resources. Shall I save this policy?
You: Save it
DEVI: [Calling save_policy with name="block-expensive-instances",
condition="cost > 500.0", action="block"]
✅ Policy saved to .cloudslash/policies/block-expensive-instances.cel.yaml
Write a Report¶
You: Generate a monthly waste report for my team
DEVI: [Calling query_graph to get all waste]
[Calling get_financial_ledger for totals]
I'll create a markdown report. May I write it to .cloudslash/reports/?
You: Yes
DEVI: [Calling write_file with path="reports/2026-05-waste-report.md"]
✅ Report saved to .cloudslash/reports/2026-05-waste-report.md
Security Model¶
Sandbox Enforcement¶
The write_file tool can only write to paths containing .cloudslash/:
- ✅
~/.cloudslash/reports/summary.md - ✅
$CWD/.cloudslash/policies/custom.cel.yaml - ❌
/etc/passwd: BLOCKED - ❌
~/important-file.txt: BLOCKED
Audit Logging¶
Every file operation is recorded in the daemon's audit ledger (visible in the S.A.U. tab of the dashboard):
[2026-05-02 12:00:01] OK [DEVI] Generated plugin 'hetzner' → ~/.cloudslash/plugins/src/... (from_llm=true)
[2026-05-02 12:00:05] OK [DEVI] Built plugin 'hetzner' → ~/.cloudslash/plugins/cloudslash-plugin-hetzner
[2026-05-02 12:01:30] OK [DEVI] Saved policy 'block-expensive' → .cloudslash/policies/block-expensive.cel.yaml
[2026-05-02 12:02:00] OK [DEVI] Wrote file .cloudslash/reports/waste-report.md (2048 bytes)
DEVI Never Auto-Executes¶
DEVI's system prompt enforces Rule 5:
"For ANY tool marked REQUIRES USER CONFIRMATION, you MUST describe what you're about to do and ASK the user for permission BEFORE calling the tool. NEVER auto-execute these."
BYOK¶
Bring Your Own Key
DEVI works with any LLM provider. Configure via environment variables or through the dashboard settings:
| Provider | Environment Variable | Local? |
|---|---|---|
| Anthropic (Claude) | ANTHROPIC_API_KEY |
No |
| OpenAI (GPT-4) | OPENAI_API_KEY |
No |
| Google (Gemini) | GEMINI_API_KEY |
No |
| Ollama (any model) | Auto-detected | Yes |
When using Ollama, all inference runs on your machine: no data leaves your network.
Plugin Studio¶
DEVI includes Create a plugin with DEVI. It scaffolds a real v3 read-only source project from the included SDK, then asks your configured model to implement the requested collector. If the model cannot finish, the validated scaffold is still returned with the failure explained.
- Name the plugin and describe what it should scan.
- Generate. The service returns the project files; nothing is built or run on the server.
- Download the ZIP and review every file.
- Locally:
go mod tidy,go test ./...,go build -o plugin ., thencs plugin devto install it andcs plugin publishto publish.
Generation is read-only by contract: capability effects are limited to read
and compute, and the generated manifest cannot request mutation.