Tools for your AI agents
Project description
SpadeBox is a set of sandboxed tools and a JS runtime for AI agents, written in Rust with JavaScript and Python bindings. Focus on your domain-specific tools and harness — give your agent SpadeBox for the rest.
| Category | Tools |
|---|---|
| Files | read_file, write_file, edit_file, move, grep, glob |
| Network | fetch |
| Code execution | js_repl, js_exec |
Features
- Lightweight sandboxing: SpadeBox uses the
cap-stdcrate for file system sandboxing, and domain allowlisting for HTTP requests. The JS engine is based on boa, and uses the same sandboxing policies. - Configurable: Pick only the tools you need for your application: files, network, or code execution, or any combination of those.
- No
bashtool: SpadeBox has been designed to work well even without abashtool. The tools are designed to cover all the basic operations an agent needs without having to shell-out. If you would like your agent to usebashyou can provide your ownbashtool in addition to SpadeBox. - Native function in JS runtime: Expose native functions to the SpadeBox JS runtime to allow your agents to programmatically interact with your application. Compatible with all supported host language bindings.
- Secret management for HTTP requests: Register credentials for specific HTTP domains and get a token that can be safely shared with your agent. Spadebox replaces the token by the actual secret within HTTP requests to the target domain.
- Default limits to preserve context: SpadeBox's tools try to safeguard your agent context, with default limits to tool outputs and HTML-to-markdown conversion.
Usage
JavaScript
import { SpadeBox } from "@spadebox/spadebox";
const sb = new SpadeBox()
.enableFiles("/workspace")
.enableHttp()
.allow("api.example.com", ["GET", "POST"])
.enableJs();
const tools = sb.tools(); // pass to your LLM as available tools
// dispatch a tool call coming from the model
const result = await sb.callTool("read_file", JSON.stringify({ path: "src/main.rs" }));
Rust
use spadebox_core::{Sandbox, DomainRule, HttpVerb, enabled_tools, call_tool};
let mut sandbox = Sandbox::new();
sandbox
.enable_fs("/workspace")?
.enable_http()
.allow(DomainRule::new("api.example.com", vec![HttpVerb::Get, HttpVerb::Post])?)
.enable_js();
let tools = enabled_tools(&sandbox); // pass to your LLM as available tools
// dispatch a tool call coming from the model
let result = call_tool(&sandbox, "read_file", r#"{"path":"src/main.rs"}"#.into()).await?;
Python
from spadebox import SpadeBox
sb = (SpadeBox()
.enable_files("/workspace")
.enable_http()
.allow("api.example.com", ["GET", "POST"])
.enable_js())
tools = sb.tools() # pass to your LLM as available tools
# dispatch a tool call coming from the model
result = sb.call_tool("read_file", '{"path": "src/main.rs"}')
MCP
# filesystem tools only
spadebox-mcp --files /workspace
# HTTP tools only (allow specific domains and verbs)
spadebox-mcp --allow "api.example.com:GET,POST" --allow "*.cdn.example.com:GET"
# JavaScript REPL only
spadebox-mcp --js
# all tools
spadebox-mcp --files /workspace --allow "api.example.com:GET" --js
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file spadebox-0.5.2-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: spadebox-0.5.2-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 6.2 MB
- Tags: CPython 3.9+, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4941a2f1c47ce769e3b9a512669eb525fa715de569141a96989bb2b050d77f20
|
|
| MD5 |
36eb7b191b56c5a6e93a11593c461a95
|
|
| BLAKE2b-256 |
2ce3cead0f30101aa1ac02be1ca459f174bdcd171785cae66e36f8faaec8cd3e
|
Provenance
The following attestation bundles were made for spadebox-0.5.2-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:
Publisher:
CI.yml on CharlyCst/spadebox
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
spadebox-0.5.2-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl -
Subject digest:
4941a2f1c47ce769e3b9a512669eb525fa715de569141a96989bb2b050d77f20 - Sigstore transparency entry: 1788775254
- Sigstore integration time:
-
Permalink:
CharlyCst/spadebox@758a0e98e76313f737c855726a1357284a0e07f8 -
Branch / Tag:
refs/tags/v0.5.2 - Owner: https://github.com/CharlyCst
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
CI.yml@758a0e98e76313f737c855726a1357284a0e07f8 -
Trigger Event:
push
-
Statement type:
File details
Details for the file spadebox-0.5.2-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.
File metadata
- Download URL: spadebox-0.5.2-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 5.8 MB
- Tags: CPython 3.9+, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6ae5a5643aa763bced09d125176b91fa256fe744778edea9d8a2cf397d09a50d
|
|
| MD5 |
546538429c5b53cb328e8a0437c5e0d8
|
|
| BLAKE2b-256 |
8cb31a32b9fecf3e684aa8f319d57b6bf431906374c78b482daa981ca07b3e73
|
Provenance
The following attestation bundles were made for spadebox-0.5.2-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:
Publisher:
CI.yml on CharlyCst/spadebox
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
spadebox-0.5.2-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl -
Subject digest:
6ae5a5643aa763bced09d125176b91fa256fe744778edea9d8a2cf397d09a50d - Sigstore transparency entry: 1788776040
- Sigstore integration time:
-
Permalink:
CharlyCst/spadebox@758a0e98e76313f737c855726a1357284a0e07f8 -
Branch / Tag:
refs/tags/v0.5.2 - Owner: https://github.com/CharlyCst
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
CI.yml@758a0e98e76313f737c855726a1357284a0e07f8 -
Trigger Event:
push
-
Statement type:
File details
Details for the file spadebox-0.5.2-cp39-abi3-macosx_11_0_arm64.whl.
File metadata
- Download URL: spadebox-0.5.2-cp39-abi3-macosx_11_0_arm64.whl
- Upload date:
- Size: 5.6 MB
- Tags: CPython 3.9+, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3e42afcce958a1cf736b083180d3c9d62d00c37ef591e00c0fbafb5db7433948
|
|
| MD5 |
43334712989f0765f46c18a14e31ae1a
|
|
| BLAKE2b-256 |
13a4db6f251490e3c5fade6667cf22a37780dfb453f8404b56c911ea1afa36e5
|
Provenance
The following attestation bundles were made for spadebox-0.5.2-cp39-abi3-macosx_11_0_arm64.whl:
Publisher:
CI.yml on CharlyCst/spadebox
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
spadebox-0.5.2-cp39-abi3-macosx_11_0_arm64.whl -
Subject digest:
3e42afcce958a1cf736b083180d3c9d62d00c37ef591e00c0fbafb5db7433948 - Sigstore transparency entry: 1788775727
- Sigstore integration time:
-
Permalink:
CharlyCst/spadebox@758a0e98e76313f737c855726a1357284a0e07f8 -
Branch / Tag:
refs/tags/v0.5.2 - Owner: https://github.com/CharlyCst
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
CI.yml@758a0e98e76313f737c855726a1357284a0e07f8 -
Trigger Event:
push
-
Statement type: