aquarium  by fafrd

Agentic tool to control a Linux machine via LLM

created 2 years ago
668 stars

Top 51.4% on sourcepulse

GitHubView on GitHub
Project Summary

This project provides an AI agent capable of controlling a Linux environment, automating tasks by translating natural language goals into executable shell commands. It's designed for users who want to leverage LLMs for system administration, development workflows, or complex command-line operations without manual intervention. The primary benefit is enabling autonomous execution of multi-step processes on a Linux machine.

How It Works

The system operates in a loop: it sends the LLM a history of executed commands and their outputs, prompting it to suggest the next command. This command is then executed within a Docker container, and its output is fed back to the LLM, either partially or fully depending on the context-mode setting. This iterative process allows the AI to learn from command outcomes, adapt to errors (like missing dependencies), and progressively work towards the defined goal.

Quick Start & Requirements

  • Install via Docker: docker build -t aquarium .
  • Run: OPENAI_API_KEY=$OPENAI_API_KEY ./aquarium --goal "Your goal is to run a Minecraft server."
  • Prerequisites: Docker, Go, OpenAI API key (or a local LLM endpoint via --url).
  • Local LLM support: --url "http://localhost:8000" for models like llama-cpp-python.

Highlighted Details

  • Supports both OpenAI API and local LLM endpoints.
  • Configurable context modes (partial or full) for managing LLM input.
  • Includes a --limit flag to cap the number of executed commands.
  • Logs AI prompts and terminal output for debugging.

Maintenance & Community

No specific contributors, sponsorships, or community links (Discord/Slack) are mentioned in the README.

Licensing & Compatibility

The project does not explicitly state a license in the provided README.

Limitations & Caveats

The AI cannot provide input to interactive programs (e.g., password prompts). Workarounds like -y for apt-get are implemented, but terminal output handling for progress bars and colors is imperfect. A significant limitation is the lack of a defined success criterion; the agent relies on a command limit to stop execution.

Health Check
Last commit

2 years ago

Responsiveness

1 day

Pull Requests (30d)
0
Issues (30d)
0
Star History
6 stars in the last 90 days

Explore Similar Projects

Feedback? Help us improve.