File size: 1,758 Bytes
c60b0a7
32df48d
 
 
 
c60b0a7
 
32df48d
 
 
 
 
 
 
 
c60b0a7
 
32df48d
 
 
a701233
 
32df48d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
---
title: Coding Tools Environment Server
emoji: 🧰
colorFrom: green
colorTo: gray
sdk: docker
pinned: false
app_port: 8000
base_path: /web
tags:
  - openenv
  - coding
  - tools
  - e2b
short_description: SETA-style multi-tool coding environment backed by E2B
---

# Coding Tools Environment

`coding_tools_env` is an E2B-backed multi-tool coding environment with explicit
filesystem and shell tools. The tool surface is modeled after
[SETA](https://github.com/EnvCommons/SETA).

Each episode creates a fresh E2B sandbox. Reset accepts setup and verify
commands. Verify commands are used by `submit_solution`.

## Tools

- `bash(command, timeout=30)`
- `read(file_path, offset=None, limit=None)`
- `write(file_path, content)`
- `edit(file_path, old_string, new_string, replace_all=False)`
- `multi_edit(file_path, edits)`
- `glob(pattern, path=None)`
- `grep(pattern, path=None, include=None)`
- `ls(path=".", ignore=None)`
- `todo_write(todos)`
- `submit_solution()`

## Quick Start

```python
from coding_tools_env import CodingToolsEnv

with CodingToolsEnv(base_url="http://localhost:8000").sync() as env:
    env.reset(
        setup=["mkdir -p /home/user/work"],
        verify=["test -f /home/user/work/answer.txt"],
    )
    print(env.call_tool("write", file_path="/home/user/work/answer.txt", content="done\n"))
    print(env.call_tool("submit_solution"))
```

## Local Server

```bash
cd envs/coding_tools_env
E2B_API_KEY=e2b_... uv run --project . server
```

## Docker

```bash
cd envs/coding_tools_env
openenv build -t coding-tools-env
docker run -p 8000:8000 -e E2B_API_KEY=e2b_... coding-tools-env
```

## Configuration

- `E2B_API_KEY`: required when resetting an episode.
- `MAX_CONCURRENT_ENVS`: max concurrent sessions (default `4`).