#artificial-intelligence #chain #llm #language #automation #variables #cchain

bin+lib cchain

An AI-native modern cli automation tool built with Rust

29 releases

new 0.3.42 Apr 9, 2025
0.3.41 Apr 3, 2025
0.3.40 Mar 29, 2025
0.2.9 Feb 21, 2025
0.1.4 Jan 31, 2025

#151 in Machine learning

Download history 212/week @ 2025-01-25 584/week @ 2025-02-01 434/week @ 2025-02-08 666/week @ 2025-02-15 123/week @ 2025-02-22 56/week @ 2025-03-01 415/week @ 2025-03-08 104/week @ 2025-03-15 125/week @ 2025-03-22 400/week @ 2025-03-29 170/week @ 2025-04-05

853 downloads per month
Used in 2 crates

MIT license

120KB
2.5K SLoC

πŸš€ cchain

Automate like the future depends on it.
Replace brittle shell scripts with AI-powered, retry-aware workflows. Built in Rust for speed and reliability.


⚑ Quick Example

Automate Git commits with AI-generated messages (no more "fix typo" commits!):

cchain run ./cchain_git_commit.json # Using a pre-built workflow to commit changes with AI

JSON Workflow (cchain_git_commit.json):

[
  {
    "command": "git",
    "arguments": ["add", "--all"],
    "retry": 3
  },
  {
    "command": "git",
    "arguments": [
      "commit", "-m", 
      "llm_generate('Summarize these changes in 1 line', 'git diff --staged')"
    ],
    "failure_handling_options": {
      "exit_on_failure": true,
      "remedy_command_line": { "command": "git", "arguments": ["reset"] }
    }
  },
  {
    "command": "git",
    "arguments": ["push"],
    "retry": 2
  }
]

🌟 Why Developers Love cchain

Problem cchain Solution
"Bash scripts break at 3 AM" βœ… Declarative JSON workflows with built-in retries
"Commit messages take forever" βœ… AI-generated inputs via LLMs
"Why does CI/CD fail locally?!" βœ… Identical behavior across local/CI environments
"Makefiles are so 1980" βœ… Simple syntax with concurrency (beta)
"Dependency hell" βœ… Single binaryβ€”zero runtime dependencies

πŸ› οΈ Features

πŸ”— Chain Commands Like a Pro

  • Retry failed steps (up to N times, or use -1 to retry indefinitely until succeeded)
  • Pass outputs between commands via environment variables
  • Fix failures automatically: Roll back with remedy_command_line

πŸ€– AI-Powered Automation

"arguments": ["llm_generate('Summarize this error', 'cat crash.log')"]
  • Integrate LLMs (OpenAI, local models via Ollama, etc.)
  • Generate commit messages, error summaries, test data on the fly

🌐 Cross-Platform Consistency

  • Works on Linux/macOS/Windows out of the box
  • No more if [[ "$OSTYPE" == "linux-gnu"* ]]; then...

⚑ Performance You’ll Notice

  • Built in Rustβ€”starts faster than your shell’s && chain
  • Uses 10x less memory than Python/Ruby scripts

πŸ“¦ Installation

Cargo: You need to ensure that you have Rust installed on your system. Otherwise, you may need to follow the instructions here to install Rust: https://www.rust-lang.org/learn/get-started

If you are using a Debian system, you will need to have build-essentials installed. Below is an example for Ubuntu:

sudo apt update
sudo apt install build-essential

Install the tools.

cargo install cchain

Pre-built binaries You can navigate to the release section for downloading the latest binaries available.


πŸš€ Getting Started

1. Create Your First Workflow

cchain new deploy --prompt "Create a workflow to pull docker image from xxx, then run it in the background"

AI generates a starter cchain_deploy.json!

2. Run It!

cchain run ./cchain_deploy.json

3. Save for Later

cchain add ./cchain_deploy.json  # Bookmark it as workflow #0
cchain run 0  # Re-run anytime
cchain run deploy # Or, use keyword to run it
cchain run "deploy some other fancy stuff" # Or, use multiple keywords

4. Access Public Chains

You may also want to share your chain, or find chains created by someone else. I hosted a GitHub repository for this purpose:

git clone https://github.com/AspadaX/cchain-chains

This respository can be directly addded to your local bookmark:

cchain add https://github.com/AspadaX/cchain-chains

It is much welcomed to PR new chains to this repository!


🧩 Advanced Usage

Dynamic Environment Variables

{
  "command": "echo",
  "arguments": ["Building $APP_VERSION"],
  "environment_variables_override": {
    "APP_VERSION": "llm_generate('Generate a semantic version')"
  },
  "stdout_stored_to": "<<build_id>>"  # Pass to next command!
}

Concurrent Tasks (Beta)

[
  {
    "command": "xh download http://example.com/large-asset.zip",
    "concurrency_group": 1
  },
  {
    "command": "xh download http://example.com/large-asset.zip",
    "concurrency_group": 1
  },
  {
    "command": "xh download http://example.com/large-asset.zip",
    "concurrency_group": 1
  }
]  # Download 3 files in parallel

You may find examples in the ./examples directory of this repo. Also, you may use the following command to generate a template chain file:

cchain new your_file_name

πŸ” Comparison

cchain Bash Just Python
Retry Logic βœ… Built-in ❌ Manual ❌ Manual ❌ Manual
AI Integration βœ… Native ❌ None ❌ None ❌ Add-ons
Cross-Platform βœ… Single Bin βœ… (Fragile) βœ… βœ… (If setup)
Learning Curve Low (JSON) High Medium High

πŸ› οΈ Use Cases (Just mocks, but feasible)

CI/CD Made Simple

[
  { "command": "cargo test", "retry": 2 },
  { "command": "llm_generate('Write release notes', 'git log') > CHANGELOG.md" },
  { "command": "docker build -t myapp ." }
]

Developer Onboarding

cchain new setup --prompt "Clone repo, install deps, start services"

AI-Augmented Debugging

{
  "command": "llm_generate('Fix this error', './failing_script.sh 2>&1')",
  "stdout_stored_to": "<<fix_suggestion>>"
}

πŸ“š Documentation

Guides


🀝 Contributing

We welcome PRs!


πŸ“œ License

MIT Β© 2024 Xinyu Bao "Do whatever you wantβ€”just don’t make CI pipelines cry."

Dependencies

~28–47MB
~841K SLoC