Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 5 additions & 14 deletions docs/quick-links/environments.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -31,26 +31,17 @@ async def search(query: str) -> str:
return db.search(query)
```

<Tip>
Before building custom tools, check if [HUD's pre-built tools](/tools) already provide what you need—computer control, shell execution, file editing, web browsing, and more.
</Tip>

Got a FastAPI app? One line:

```python
env.connect_fastapi(app)
```

All your routes become tools. HUD also provides ready-to-use tools—just `add_tool()` them:

```python
from hud.tools.computer import OpenAIComputerTool
from hud.tools.coding import EditTool
from hud.tools.hosted import WebSearchTool

env = Environment("my-agent")
env.add_tool(OpenAIComputerTool()) # Computer use for browser/desktop
env.add_tool(EditTool()) # str_replace file editing
env.add_tool(WebSearchTool()) # Web search via Anthropic/Google
```

See the [Tools](/tools) section for all available tools including [computer](/tools/computer), [coding](/tools/coding), and [web](/tools/web).
All your routes become tools.

## Scenarios

Expand Down
7 changes: 4 additions & 3 deletions hud/cli/utils/build_display.py
Original file line number Diff line number Diff line change
Expand Up @@ -141,10 +141,11 @@ def _display_lock_details(
rich_console.print(scenarios_table)

# Display environment variables
env_config = lock_data.get("environment", {})
env_config = lock_data.get("environment") or {}
if env_config:
required_vars = env_config.get("variables", {}).get("required", [])
optional_vars = env_config.get("variables", {}).get("optional", [])
variables = env_config.get("variables") or {}
required_vars = variables.get("required", [])
optional_vars = variables.get("optional", [])

if required_vars or optional_vars:
rich_console.print()
Expand Down
12 changes: 9 additions & 3 deletions scripts/pre_release_check.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,18 +50,24 @@ async def run_evaluation(self) -> bool:

try:
# Import required modules
from hud.datasets import run_dataset
from hud.datasets import load_tasks, run_dataset

# Load tasks and apply tool filter to each task's environment
task_list = load_tasks(self.dataset)
for task in task_list:
if task.env is not None:
# Only allow anthropic_computer tool for Claude
task.env._agent_include = ["anthropic_computer"]

# Run the evaluation
agent_params = {
"model": "claude-sonnet-4-5",
"allowed_tools": ["anthropic_computer"],
"verbose": False,
}

logger.info("Running evaluation...")
self.results = await run_dataset(
tasks=self.dataset,
tasks=task_list,
agent_type="claude",
agent_params=agent_params,
max_concurrent=25,
Expand Down
Loading