
Security News
Axios Supply Chain Attack Reaches OpenAI macOS Signing Pipeline, Forces Certificate Rotation
OpenAI rotated macOS signing certificates after a malicious Axios package reached its CI pipeline in a broader software supply chain attack.
The package manager for AI CLI tools.
c4ai add -g github
c4ai run github notifs
AI agents need tools. MCP servers are complex to set up. c4ai makes it simple:
c4ai add github just worksc4ai run <tool> <command># With bun (recommended)
bun install -g c4ai
# With npm
npm install -g c4ai
# Add a local registry (directory containing tools)
c4ai config --add-registry ~/my-tools
# Search for tools
c4ai search github
# Install globally (available everywhere)
c4ai add -g github
# Install locally (project-scoped)
cd ~/my-project
c4ai add mongodb
# Run tools
c4ai run github notifs
c4ai run mongodb databases
| Command | Description |
|---|---|
c4ai add <pkg> | Install package locally |
c4ai add -g <pkg> | Install package globally |
c4ai remove <pkg> | Uninstall package |
c4ai remove -g <pkg> | Uninstall global package |
c4ai list | List local packages |
c4ai list -g | List global packages |
| Command | Description |
|---|---|
c4ai search <query> | Search for packages |
c4ai info <pkg> | Show package details |
| Command | Description |
|---|---|
c4ai run <pkg> <cmd> [args] | Run a tool command |
c4ai start <pkg> | Start package as MCP server |
Notes:
c4ai run chrome screenshot https://example.com --full-pagec4ai run options, use -- to pass-through: c4ai run <pkg> <cmd> -- --help| Command | Description |
|---|---|
c4ai config | Show current config |
c4ai config --add-registry <path> | Add local registry |
c4ai config --remove-registry <path> | Remove registry |
| Command | Description |
|---|---|
c4ai init [name] | Create a new tool project |
c4ai mcp-config | Generate Claude Code MCP config |
Tools are defined by a c4ai.json manifest:
{
"name": "github",
"version": "1.0.0",
"description": "GitHub CLI wrapper",
"entry": "run.ts",
"runtime": "bun",
"commands": {
"notifs": {
"description": "Your notifications"
},
"repos": {
"description": "List repositories",
"args": [
{ "name": "user", "required": false }
]
}
},
"env": {
"GITHUB_TOKEN": {
"required": false,
"description": "Personal access token"
}
},
"mcp": {
"enabled": true
}
}
| Field | Required | Description |
|---|---|---|
name | Yes | Package name (lowercase, hyphens ok) |
version | Yes | Semver version |
entry | Yes | Entry point script |
description | No | Package description |
runtime | No | Runtime: bun (default), node, deno |
commands | No | Command definitions for MCP |
env | No | Environment variable requirements |
mcp.enabled | No | Enable MCP server mode |
~/.c4ai/
├── config.json # Global configuration
├── packages/ # Globally installed packages
│ └── github/
└── bin/ # PATH-linked executables (optional)
./
├── c4ai.json # Project manifest (if a tool)
├── c4ai.lock # Lock file (reproducible installs)
└── .c4ai/
└── packages/ # Locally installed packages
c4ai can generate configuration for Claude Code:
# Generate config for all installed packages
c4ai mcp-config
# Generate for specific packages
c4ai mcp-config --packages github,slack
# Get snippet for a single package
c4ai mcp-config --package github --snippet
Output:
{
"mcpServers": {
"c4ai-github": {
"command": "c4ai",
"args": ["start", "github"]
}
}
}
Add this to your Claude Code MCP settings.
c4ai discovers packages from local directories:
# Add a registry
c4ai config --add-registry ~/agent-tools
# Now packages in ~/agent-tools are discoverable
c4ai search github # Finds ~/agent-tools/github/
A registry is just a directory containing tool folders, each with a c4ai.json.
# Create a new tool
c4ai init my-tool
cd my-tool
# Edit `run.ts` and `c4ai.json`
# Test locally
bun run run.ts hello world
# Install for testing
cd ~/some-project
c4ai add --local ~/path/to/my-tool -y
c4ai run my-tool hello world
Tools are simple CLI scripts that output JSON:
#!/usr/bin/env bun
import { cli, output } from '@cli4ai/lib/cli.ts';
const program = cli('my-tool', '1.0.0', 'Example tool');
program
.command('hello [name]')
.description('Say hello')
.action((name?: string) => {
output({ message: `Hello, ${name || 'world'}!` });
});
program.parse();
When run via c4ai run, these env vars are set for convenience:
C4AI_CWD: directory where you invoked c4aiC4AI_PACKAGE_DIR: installed package directoryC4AI_PACKAGE_NAME: resolved package nameC4AI_ENTRY: absolute path to the tool entry file| Aspect | Global (-g) | Local (default) |
|---|---|---|
| Location | ~/.c4ai/packages/ | ./.c4ai/packages/ |
| Scope | Available everywhere | Project only |
| Lock file | No | Yes (c4ai.lock) |
| Use case | Utilities (github, slack) | Project-specific (mongodb) |
Tools can require environment variables:
{
"env": {
"API_KEY": { "required": true },
"DEBUG": { "required": false, "default": "false" }
}
}
Set them in your shell or .env file.
MIT
FAQs
The package manager for AI CLI tools - cliforai.com
We found that c4ai demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
OpenAI rotated macOS signing certificates after a malicious Axios package reached its CI pipeline in a broader software supply chain attack.

Security News
Open source is under attack because of how much value it creates. It has been the foundation of every major software innovation for the last three decades. This is not the time to walk away from it.

Security News
Socket CEO Feross Aboukhadijeh breaks down how North Korea hijacked Axios and what it means for the future of software supply chain security.