Skip to content

aspectrr/fluid.sh

Repository files navigation

🌊 fluid.sh

The AI Sys-Admin for Enterprise

Commit Activity License Discord GitHub stars

Fluid is an AI agent built for the core steps of debugging and managing Linux servers. Read-Only mode for getting context, Create a sandbox and make edits to test changes. Create an Ansible Playbook to recreate on prod.

Features | Quick Start | Demo | Docs


Problem

AI agents can install packages, configure services, write scripts - autonomously. But one mistake on production and you're getting paged at 3 AM. So we limit agents to chatbots instead of letting them do real work.

Solution

fluid.sh gives agents direct read-only SSH access to your servers for context gathering, then full root access in isolated VM sandboxes for testing changes. When done, a human reviews the diff and approves an auto-generated Ansible playbook before anything touches production.

                    Read-Only (direct SSH)
Agent Task  -->  Source Host (inspect)  -->  Sandbox VM (autonomous)  -->  Human Approval  -->  Production
                  - View logs                  - Full root access            - Review diff
                  - Check configs              - Install packages            - Approve Ansible
                  - Query services             - Edit configs                - One-click apply
                  - Read files                 - Run services

Demo

CLI Agent Demo

Features

Feature Description
Autonomous Execution Agents run commands, install packages, edit configs - no hand-holding
Full VM Isolation Each agent gets a dedicated microVM with root access
Interactive TUI Natural language interface - just type what you want done
Human-in-the-Loop Blocking approval workflow before any production changes
Ansible Export Auto-generate playbooks from agent work for production apply
MCP Integration Use fluid tools from Claude Code, Cursor, Windsurf
Read-Only Mode Inspect source VMs safely without risk of modification
Multi-Host Scale across hosts with the daemon + control plane

Read-Only Mode

The CLI connects directly to your source hosts over SSH - no daemon required. A dedicated fluid-readonly user with a restricted shell ensures agents can only run read-only commands.

What agents can do:

  • Read files, logs, and configs (cat, journalctl, tail, etc.)
  • Inspect processes and services (ps, systemctl status, top)
  • Query system state (df, free, ip, ss, uname)
  • Run diagnostic commands (dig, ping, lsblk)

What agents cannot do:

  • Write, modify, or delete files
  • Install or remove packages
  • Start, stop, or restart services
  • Execute arbitrary scripts or interpreters

Commands are validated twice: client-side against an allowlist in the CLI, and server-side by the restricted shell on the host. You can extend the default allowlist with extra_allowed_commands in your config.

Preparing a Host

Before fluid can read from a host, you need to prepare it. This creates the fluid-readonly user with a restricted shell and deploys an SSH key.

Prerequisites: The host must be accessible via SSH using your existing ~/.ssh/config (any ProxyJump, port, or user settings are respected).

fluid source prepare <hostname>

This runs 4 steps on the remote host:

  1. Installs a restricted shell script at /usr/local/bin/fluid-readonly-shell
  2. Creates a fluid-readonly system user with that shell
  3. Deploys fluid's SSH public key to the user's authorized_keys
  4. Restarts sshd

After prepare, the host appears in /hosts as prepared. The CLI generates an ed25519 key pair at ~/.config/fluid/keys/ on first run and reuses it for all hosts.

# List prepared hosts
fluid source list

Sensitive Data Redaction

All tool output is scanned for sensitive data before it reaches the AI agent. This prevents accidental exposure of credentials through commands like cat /etc/ssl/private/server.key or kubectl get secret -o yaml.

What gets redacted:

Type Examples
PEM private keys RSA, EC, ED25519, OPENSSH private key blocks
Base64-encoded keys Output of cat key.pem | base64, Kubernetes secret values
Kubernetes secrets tls.key, ssh-privatekey, private_key, secret_key fields
API keys & tokens sk-..., key-..., Bearer tokens, AWS access keys (AKIA...)
Connection strings postgres://, mysql://, mongodb://, redis:// URIs
IP addresses IPv4 and IPv6 addresses

Redaction runs at two layers: inline when each tool returns results, and again before the full conversation is sent to the LLM. The agent sees [REDACTED: ...] placeholders instead of the actual values.

Quick Start

Install

curl -fsSL https://fluid.sh/install.sh | bash

Or with Go:

go install github.com/aspectrr/fluid.sh/fluid-cli/cmd/fluid@latest

Launch the TUI

fluid

On first run, onboarding walks you through host setup, and LLM API key configuration.

Architecture

                          Direct SSH (read-only)
fluid (TUI/MCP)  -------------------------------->  Source Hosts
       |                                              - fluid-readonly user
       |                                              - restricted shell
       |                                              - command allowlist
       |
       +--- gRPC :9091 --->  fluid-daemon  --->  QEMU microVMs (sandboxes)
                                   |
                                   +--- control-plane (optional, multi-host)
                                   |
                                   +--- web dashboard
  • fluid-cli: Interactive TUI agent + MCP server. Connects directly to source hosts via SSH for read-only inspection, and to the daemon via gRPC for sandbox operations.
  • fluid-daemon: Background service managing microVM sandboxes
  • control-plane (api): Multi-host orchestration, REST API, web dashboard
  • web: React dashboard for monitoring and approval

MCP Integration

Connect Claude Code, Codex, or Cursor to fluid via MCP:

{
  "mcpServers": {
    "fluid": {
      "command": "fluid",
      "args": ["mcp"]
    }
  }
}

17 tools available: create_sandbox, destroy_sandbox, run_command, edit_file, read_file, create_playbook, and more. See the full reference.

TUI Slash Commands

Command Description
/vms List available VMs
/sandboxes List active sandboxes
/hosts List configured hosts
/playbooks List Ansible playbooks
/settings Open configuration
/compact Compact conversation
/context Show token usage
/clear Clear history
/help Show help

Toggle between edit and read-only mode with Shift+Tab.

Copy text by dragging and holding Shift.

Development

Prerequisites

  • mprocs - Multi-process runner for local dev
  • Go 1.24+
  • QEMU/KVM - See local setup docs

30-Second Start

git clone https://github.com/aspectrr/fluid.sh.git
cd fluid.sh
mprocs

Services:

Project Structure

fluid-cli/        # Go - Interactive TUI agent + MCP server
fluid-daemon/     # Go - Background microVM sandbox management daemon
api/              # Go - Control plane REST API + gRPC
sdk/              # Python - SDK for the API
web/              # React - Dashboard UI
proto/            # Protobuf definitions

Running Tests

cd fluid-cli && make test
cd fluid-daemon && make test
cd api && make test
cd web && bun run build

Enterprise

For teams with security and compliance requirements, fluid.sh supports:

  • Encrypted snapshots at rest - Source images encrypted on sandbox hosts with configurable TTL and secure wipe on eviction
  • Network isolation - Sandboxes boot into isolated networks with no route to production by default, explicit allowlists for service access
  • RBAC - Control which users and teams can create sandboxes from which source VMs
  • Audit logging - Full trail of every snapshot pull, sandbox creation, and destruction
  • Secrets scrubbing - Configurable per source VM: scrub credentials before sandbox creation or keep exact replica for auth debugging
  • Scoped daemon credentials - Read-only snapshot capability on production hosts, nothing else

If you need these, reach out to Collin to learn more about an enterprise plan.

Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Make changes with tests
  4. Submit a pull request

All contributions must maintain the security model and include appropriate tests.

Reach out on Discord with questions or for access to test VMs.

License

MIT License - see LICENSE for details.

Star History

Star History Chart

Made with ❤️ by Collin, Claude & Contributors

About

The Open-Source AI ELK-Stack Engineer

Topics

Resources

License

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors