crewAIInc / crewAIInc/crewAI

[FEATURE] Add a Fly.io Sprites command execution tool

Open
#7,327 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

vendor-pitch
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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.