[FEATURE] Add a Fly.io Sprites command execution tool
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 58.8k
- Forks
- 8.5k
- Avg merge
- 1d 15h
- Merged PRs (30d)
- 109
Description
Feature Area
Integration with external tools
Is your feature request related to an existing bug?
No. This adds support for another remote execution environment.
Describe the solution you'd like
Add a SpritesExecTool so CrewAI agents can run shell commands in an existing Fly.io Sprite, using the official Python SDK. Sprites provide a persistent remote Linux environment, so files can carry over between tasks without running agent-generated commands on the CrewAI host.
The proposed initial scope is deliberately small:
- Configure the Sprite name and API token when constructing the tool; agents supply only a command and optional working directory.
- Return stdout, stderr, and the exit code, including nonzero exits.
- Support synchronous and asynchronous calls, disable result caching by default, and truncate returned output with explicit flags.
- Leave Sprite creation and deletion to the caller.
- Ship the SDK as an optional
crewai-tools[sprites]dependency, with tests and a usage example.
Document the safety limits explicitly: commands have shell access inside the Sprite, a client timeout does not guarantee remote process termination, and truncating captured output limits agent context rather than memory consumption.
Describe alternatives you've considered
A project-specific BaseTool wrapper works, but each user has to repeat the SDK wiring, credential handling, and output conventions. CrewAI already includes wrappers for other remote sandbox providers; this would offer the same entry point for users choosing Fly.io Sprites.
Additional context
An implementation is ready to submit. Validation includes 39 new tests, 210 tests across the selected regression suite, focused type checking, lint, a package build, and 15 checks against a disposable live Sprite. The live CrewAI agent loop used a deterministic local model with real tool dispatch and remote execution.
AI disclosure: this contribution was developed with an AI coding assistant. Please apply the required llm-generated label; GitHub rejects my account's attempt to add labels in this repository.
Willingness to Contribute
Yes, I'd be happy to submit a pull request.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reading CrewAI's existing wrappers for remote sandbox providers and the BaseTool entry point, then review the official Python SDK and the proposed optional dependency configuration. Done means synchronous and asynchronous command execution returns stdout, stderr, and exit status with the stated timeout and truncation behavior, supported by tests, an example, and the listed type-checking, lint, and build checks.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- linux, python
- Domain
- cloud, tooling
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Clearly specified
- Newbie friendliness
- 70/100