A powerful command-line tool for managing projects and pipelines with automatic binary management.
- Project Management: Initialize and manage projects with ease
- Pipeline Operations: Spawn and control data pipelines with S3 integration
- Automatic Binary Management: Automatically downloads and manages required binaries
- System Status Monitoring: Check the health and status of all components
- Cross-Platform Support: Works on macOS (ARM64/x86_64) and Linux (x86_64)
- Rust 1.70+ (2024 edition)
- Internet connection (for downloading managed binaries)
- Supported platforms:
- macOS (ARM64/x86_64)
- Linux (x86_64)
git clone <repository-url>
cd cli
cargo build --release
cp target/release/ag /usr/local/bin/ # or any directory in your PATH# Check system status
ag status system
# View binary status
ag status binaries
# Initialize a new project
ag project init my-project
# Get project information
ag project info
# Spawn a pipeline
ag pipeline spawn
# Get pipeline information
ag pipeline info
# Check version
ag --versionag project init <name> # Initialize a new project
ag project info # Get information about a projectag pipeline spawn # Spawn a new pipeline with S3 server
ag pipeline info # Get information about a pipelineag status binaries # Show status of all installed binaries
ag status system # Show overall system statusThe tool automatically manages the following binaries:
- Purpose: S3 server with filesystem backend
- Source: agnosticeng/s3fs
- Platforms: macOS (ARM64/x86_64), Linux (x86_64)
- Purpose: High-performance columnar database
- Source: Official ClickHouse releases
- Platforms: macOS (ARM64/x86_64), Linux (x86_64)
- Purpose: Agnostic toolkit binary
- Source: agnosticeng/agt
- Platforms: macOS (ARM64/x86_64), Linux (x86_64)
The tool creates and manages a working directory at ~/.agnostic/:
~/.agnostic/
├── bin/ # Downloaded binaries
│ ├── s3fs # S3 server binary
│ ├── clickhouse # ClickHouse database binary
│ └── agt # Agnostic toolkit binary
├── cache/ # Cache files
├── logs/ # Log files
├── projects/ # Project data
└── temp/ # Temporary files
Binaries are automatically downloaded and installed on first use:
- Downloaded from official GitHub releases
- Saved to
~/.agnostic/bin/with executable permissions - Platform-specific binaries are automatically selected
- Installation progress is shown with download size and speed
- Binary integrity is verified after installation
When binaries need to be installed, you'll see:
Installing s3fs binary...
Downloading s3fs binary for macosaarch64...
Download size: 6291456 bytes (6.00 MB)
Download completed: 6291456 bytes
s3fs binary installed successfully at: /Users/username/.agnostic/bin/s3fs
Verifying s3fs binary...
s3fs version: v0.0.1 (from agnosticeng/s3fs)
Binary setup completed: 1 new binaries installed
If all binaries are already installed, the tool runs silently without any installation messages.
For detailed output, use the verbose flag or environment variable:
# Using environment variable
VERBOSE=1 ag status system
# Using command line flag (if supported)
ag --verbose status system- macOS ARM64 (Apple Silicon)
- macOS x86_64 (Intel)
- Linux x86_64
The tool automatically detects your platform and downloads the appropriate binaries.
If you encounter problems with binary installation:
- Check your internet connection
- Verify you have write permissions to
~/.agnostic/bin/ - Check available disk space
- Try removing the binary and re-running:
rm ~/.agnostic/bin/<binary-name>
If you get permission errors:
- Check file permissions:
ls -la ~/.agnostic/bin/ - Make binaries executable:
chmod +x ~/.agnostic/bin/* - Ensure your user has write access to the home directory
If a binary is reported as missing:
- Check if the binary exists:
ls -la ~/.agnostic/bin/ - Verify executable permissions
- Try forcing a re-download by deleting the binary
Prerequisites:
- Rust toolchain (install from rustup.rs)
- Git
# Install Rust if you haven't already
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# Clone and build
git clone <repository-url>
cd cli
cargo build --releaseThe project uses the following main dependencies:
clap- Command line argument parsingreqwest- HTTP client for downloading binariestokio- Async runtimeindicatif- Progress bars for downloadszip- Archive extraction
cargo testsrc/main.rs- Main entry point and CLI argument parsingsrc/commands/- Command implementations (project, pipeline, status)src/utils/- Utility modulessrc/utils/app/- Application initialization and configurationsrc/utils/bin/- Binary management and providerssrc/utils/fs/- Filesystem utilitiessrc/utils/net/- Network and download utilities
The tool uses sensible defaults but can be configured through environment variables:
VERBOSE=1- Enable verbose outputAG_HOME- Override the default~/.agnosticdirectory (optional)
[Add your license information here]
[Add contribution guidelines here]
If you encounter issues:
- Check the troubleshooting section
- Run
ag status systemto diagnose problems - Use verbose mode for detailed output:
VERBOSE=1 ag <command> - Check binary status:
ag status binaries
For additional help, please open an issue in the repository.