Skip to content

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/chat on 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.

  1. Name the plugin and describe what it should scan.
  2. Generate. The service returns the project files; nothing is built or run on the server.
  3. Download the ZIP and review every file.
  4. Locally: go mod tidy, go test ./..., go build -o plugin ., then cs plugin dev to install it and cs plugin publish to publish.

Generation is read-only by contract: capability effects are limited to read and compute, and the generated manifest cannot request mutation.