Capabilities are modular, reusable configuration units that extend harness, agent, or session behavior. They provide the building blocks for composing agent functionality without writing code.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/everruns/everruns/llms.txt
Use this file to discover all available pages before exploring further.
Concept
A capability can contribute:- System prompt additions — Instructions prepended to the agent’s prompt
- Tools — Functions the agent can invoke during execution
- Mount points — Files and directories populated in the session filesystem
Capabilities are resolved at the service layer (not inside the agent loop). The loop receives a fully-configured RuntimeAgent with merged prompts and tools.
Capability Types
Built-in Capabilities
Implemented in Rust, registered inCapabilityRegistry:
- ID format:
snake_case(e.g.,current_time,web_fetch) - Always available (status permitting)
- No external dependencies
MCP Capabilities
MCP servers integrated as “virtual capabilities”:- ID format:
mcp:{server_uuid}(e.g.,mcp:01933b5a-0000-7000-8000-000000000501) - Tools discovered at runtime (cached 24h)
- Tool names prefixed:
mcp_{server}__{tool_name} - Display “MCP” badge in UI
specs/mcp-servers.md for MCP integration details.
Skill Capabilities
Registry-stored skills following the agentskills.io format:- ID format:
skill:{skill_uuid} - Org-wide availability
- Progressive disclosure (list → activate → use resources)
specs/skills-registry.md for details.
Capability Data Model
Seecrates/core/src/capability_types.rs for the full type definitions.
Description Markdown
Capability descriptions support GFM including:- Basic formatting (
**bold**,*italic*,`code`) - Lists and tables
- Code blocks with syntax highlighting
- GitHub-style alerts:
Risk Levels (TM-AGENT-005)
Capabilities declare risk level for security enforcement:| Level | Description | Enforcement |
|---|---|---|
low | Default, no special requirements | Any org member |
medium | Logged but allowed | Any org member |
high | Arbitrary code execution or external access | Requires OrgRole::Admin |
virtual_bash— Arbitrary command executionweb_fetch— External network requestsdocker_container— Docker container managementdaytona— Cloud sandbox accesscodesandbox— Cloud VM access
Capability Composition
Resolution Flow
When a session executes:- Load harness capabilities — Fetch from harness configuration
- Load agent capabilities — Fetch from agent configuration (if agent assigned)
- Load session capabilities — Fetch from session configuration
- Resolve dependencies — Recursively add required capabilities
- Deduplicate — Each capability appears once (first config wins)
- Collect tools — Merge tool definitions from all capabilities
- Build prompt — Prepend capability prompts in reverse order
- Create RuntimeAgent — Fully configured agent for execution
crates/core/src/capabilities/mod.rs for resolve_dependencies() and collect_capabilities().
Dependency Resolution
Capabilities can declare dependencies:- Resolved depth-first
- Applied before dependents (topological order)
- Only user-selected capabilities stored (dependencies resolved at runtime)
- Circular dependencies detected and rejected
virtual_bash automatically includes session_file_system.
Dependency Resolution Rules
Dependency Resolution Rules
- Maximum 100 resolved capabilities (prevents resource exhaustion)
- Circular dependencies return error
- Unknown capabilities in dependency chain silently skipped
- Dependencies cannot be removed if required by other selected capabilities
Feature Aggregation
Capabilities declare UI features they contribute:- Collected from all resolved capabilities
- Deduplicated
- Exposed in Session DTO as
featuresarray - Used by UI to conditionally render tabs/sections
| Feature | UI Element | Capabilities |
|---|---|---|
file_system | Workspace tab | session_file_system, virtual_bash, sample_data |
secrets | Storage tab | session_storage |
key_value | Storage tab | session_storage |
schedules | Schedules tab | session_schedule |
sql_database | (reserved) | session_sql_database |
Capability Application
Capabilities are applied in this order:Mount Points
Capabilities can populate session filesystems with initial files:- Files created in
/workspace(session root) - ReadOnly files flagged with
is_readonly = true - Directories created recursively
crates/core/src/capability_types.rs for MountPoint, MountAccess, and MountSource.
Built-in Capabilities
session_file_system
Tools:read_file, write_file, list_directory, grep_files, delete_file, stat_file
Features: file_system
Provides access to session-isolated virtual filesystem stored in PostgreSQL.
Path normalization: All paths relative to /workspace, normalized internally.
Auto-create parents: Writing /a/b/c.txt creates /a and /a/b automatically.
virtual_bash
Dependencies:session_file_system
Tools: bash (command, working_dir, timeout)
Features: file_system
Risk Level: high
Sandboxed bash execution using bashkit:
- WASM-like isolation (no system access)
- Shared filesystem with FileSystem capability
- Built-in commands (cd, ls, cat, echo, etc.)
- Resource limits to prevent infinite loops
web_fetch
Tools:web_fetch (url, method, as_markdown, as_text)
Risk Level: high
Fetch content from URLs using fetchkit:
- HTML to markdown/text conversion (LLM-optimized)
- Binary content metadata (images, PDFs return metadata + error message)
- SSRF protection via
DnsPolicy::block_private_ips() - Timeouts: 1s first byte, 30s body (partial content on timeout)
fetchkit::TOOL_LLMTXT constant for comprehensive LLM-optimized documentation.
session_storage
Tools:kv_store, secret_store (operation: set/get/delete/list)
Features: secrets, key_value
Session-scoped storage:
- Key/Value — Plain text (state, preferences, results)
- Secrets — AES-256-GCM encrypted at rest (API keys, tokens)
SECRETS_ENCRYPTION_KEY env var.
stateless_todo_list
Tools:write_todos (explanation, todos[])
Stateless task tracking via conversation history:
- Each
write_todoscall receives and returns complete todo list - LLM remembers todos by reading previous tool calls
- No separate storage layer needed
- Complex multi-step tasks (3+ steps)
- User provides multiple tasks
- Non-trivial work requiring planning
- One task
in_progressat a time - Mark completed immediately
- Replace entire list each call
current_time
Tools:get_current_time (timezone, format)
Time/date utilities with timezone support.
skills
Dependencies:session_file_system
Tools: list_skills, activate_skill
Discovery mechanism for VFS-based skills (/.agents/skills/{name}/SKILL.md):
- Discovery —
list_skillsscans for SKILL.md files - Activation —
activate_skillloads full instructions - Resources — Bundled files accessible via filesystem tools
skill:{uuid}).
See specs/skills-registry.md for agentskills.io format.
platform_management
Tools:manage_harnesses, manage_agents, manage_sessions, session_interact
Programmatic management of Everruns entities:
- CRUD operations — Create, read, update, delete harnesses/agents/sessions
- Session interaction — Send messages, get messages, wait for idle
- UI links — All results include
ui_linkfor visual management
PlatformStore.
sample_data
Dependencies:session_file_system
Features: file_system
Demonstration capability with sample files:
/samples/users.json(readonly)/samples/config.yaml(readonly)/samples/README.md(readonly)
Experimental Capabilities (Dev Only)
docker_container
Status: Experimental (Dev only) Tools:docker_exec, docker_read_file, docker_write_file, docker_logs, docker_stop
Risk Level: high
Session-scoped Docker containers (everruns-{session_id}):
- Lazily started on first use
- Persists for session lifetime
- Isolated between sessions
integrations/docker/) auto-registered via inventory.
codesandbox
Status: Experimental (Dev only) Dependencies:session_storage
Tools: csb_create_sandbox, csb_exec, csb_exec_status, csb_read_file, csb_write_file, csb_download_workspace, csb_list_sandboxes, csb_manage_sandbox
Risk Level: high
Cloud-based sandbox VMs via CodeSandbox API:
- Multiple sandboxes per session
- Two-tier API (Management + Pint)
- Encrypted state storage (pitcher URL/token in session secrets)
specs/codesandbox.md for details.
Advanced Features
Message Filters
Capabilities can contribute filters that modify message retrieval:TimeRange { from, to }— Filter by timestampEventTypes(Vec<String>)— Whitelist event typesToolName(String)— Filter tool results by nameSearch(String)— Full-text searchExcludeIds/IncludeIds— ID-based filteringCustom(Arc<dyn Fn>)— In-memory predicates
crates/core/src/message_filter.rs for filter types.
Dynamic System Prompts
Capabilities can generate prompts at runtime:agent_instructions— Read project-specific instructions from VFSskills— Load activated skill instructions
API Endpoints
Best Practices
Capability Selection
- Minimal set — Only enable capabilities you need
- Understand dependencies — Some capabilities auto-include others
- Risk awareness — High-risk capabilities require admin role
- Layer appropriately:
- Harness — Base tools everyone needs
- Agent — Domain-specific additions
- Session — Temporary experiments
Ordering
Capability order affects system prompt composition:Configuration
Some capabilities accept per-instance config:Adding New Capabilities
- Implement the
Capabilitytrait (seecrates/core/src/capabilities/mod.rs) - Register in
CapabilityRegistry::with_builtins() - Add tool implementations (implement
Tooltrait) - No database migration needed — ID validated at runtime
- Create crate under
integrations/ - Add as dependency in
crates/server/Cargo.tomlandcrates/worker/Cargo.toml - Add
extern cratetocrates/server/src/lib.rsandcrates/worker/src/lib.rs
Next Steps
Agents
Learn about agent configuration
Sessions
Understand session execution
MCP Servers
Integrate external tools via MCP
Capabilities API
API reference for capabilities