Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 13 additions & 7 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ jobs:
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: "1.24"
go-version: "1.26"
cache: true
cache-dependency-path: go.sum

Expand All @@ -47,7 +47,7 @@ jobs:
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: "1.24"
go-version: "1.26"
cache: true
cache-dependency-path: go.sum

Expand Down Expand Up @@ -86,7 +86,7 @@ jobs:
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: "1.24"
go-version: "1.26"
cache: true
cache-dependency-path: go.sum

Expand Down Expand Up @@ -144,7 +144,7 @@ jobs:
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: "1.24"
go-version: "1.26"
cache: true
cache-dependency-path: go.sum

Expand Down Expand Up @@ -208,7 +208,13 @@ jobs:
- name: Check Links in docs/
uses: lycheeverse/lychee-action@v2
with:
args: --verbose --no-progress --exclude-path '.github' --exclude-path 'specs' --exclude 'conventionalcommits\.org' 'docs/**/*.md' 'README.md'
args: >-
--verbose --no-progress
--exclude-path '.github'
--exclude-path 'specs'
--exclude 'conventionalcommits\.org'
--exclude 'github\.com/arc-framework/arc-cli/releases'
'docs/**/*.md' 'README.md'
fail: true
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Expand All @@ -224,7 +230,7 @@ jobs:
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: "1.24"
go-version: "1.26"
cache: true

- name: Build PR Binary
Expand Down Expand Up @@ -307,7 +313,7 @@ jobs:
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: "1.24"
go-version: "1.26"
cache: true
cache-dependency-path: go.sum

Expand Down
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,8 @@ pkg/ui.legacy/
.github/agents
.github/prompts
.claude
pr-description.md
specs/**/pr-description.md

# Temporary analysis/debug files
*_ANALYSIS.md
Expand Down
6 changes: 6 additions & 0 deletions .golangci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -170,6 +170,12 @@ linters:
- errcheck
text: 'Error return value of `fmt\.Fprintf` is not checked'

# pkg/log clashes with stdlib "log" — package name is intentional
- linters:
- revive
path: pkg/log/
text: "avoid package names that conflict"

# pkg/workspace/template clashes with stdlib "template" — package name is intentional
- linters:
- revive
Expand Down
63 changes: 33 additions & 30 deletions .goreleaser.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ archives:
- docs/**/*

checksum:
name_template: 'checksums.txt'
name_template: "checksums.txt"
algorithm: sha256

snapshot:
Expand All @@ -65,39 +65,43 @@ changelog:
use: github
filters:
exclude:
- '^docs:'
- '^test:'
- '^chore:'
- "^docs:"
- "^test:"
- "^chore:"
- Merge pull request
- Merge remote-tracking branch
- Merge branch
groups:
- title: 'New Features'
- title: "New Features"
regexp: '^.*?feat(\([[:word:]]+\))??!?:.+$'
order: 0
- title: 'Bug Fixes'
- title: "Bug Fixes"
regexp: '^.*?fix(\([[:word:]]+\))??!?:.+$'
order: 1
- title: 'Performance Improvements'
- title: "Performance Improvements"
regexp: '^.*?perf(\([[:word:]]+\))??!?:.+$'
order: 2
- title: 'Other Changes'
- title: "Other Changes"
order: 999

# Homebrew tap (optional - uncomment and configure if needed)
# brews:
# - name: arc
# repository:
# owner: arc-framework
# name: homebrew-tap
# folder: Formula
# homepage: https://github.com/arc-framework/arc-cli
# description: "A.R.C. Framework CLI - Advanced toolbox for developers"
# license: MIT
# install: |
# bin.install "arc"
# test: |
# system "#{bin}/arc", "--version"
brews:
- name: arc
repository:
owner: arc-framework
name: homebrew-tap
token: "{{ .Env.HOMEBREW_TAP_GITHUB_TOKEN }}"
directory: Formula
homepage: "https://github.com/arc-framework/arc-cli"
description: "A.R.C. Framework CLI - Agent Runtime Core for managing and orchestrating AI infrastructure"
license: "MIT"
commit_author:
name: goreleaserbot
email: bot@goreleaser.com
commit_msg_template: "Brew formula update for arc version {{ .Tag }}"
install: |
bin.install "arc"
test: |
system "#{bin}/arc", "version"

# Docker images (optional - uncomment if you want to publish to Docker Hub)
# dockers:
Expand Down Expand Up @@ -131,32 +135,32 @@ release:
skip_upload: false
header: |
## A.R.C. CLI {{ .Tag }}

Release Date: {{ .Date }}

### 🚀 Quick Installation

**macOS (Apple Silicon):**
```bash
curl -L https://github.com/arc-framework/arc-cli/releases/download/{{ .Tag }}/arc-cli_darwin_arm64.tar.gz | tar xz
sudo mv arc /usr/local/bin/
arc version
```

**macOS (Intel):**
```bash
curl -L https://github.com/arc-framework/arc-cli/releases/download/{{ .Tag }}/arc-cli_darwin_amd64.tar.gz | tar xz
sudo mv arc /usr/local/bin/
arc version
```

**Linux:**
```bash
curl -L https://github.com/arc-framework/arc-cli/releases/download/{{ .Tag }}/arc-cli_linux_amd64.tar.gz | tar xz
sudo mv arc /usr/local/bin/
arc version
```

**Windows (PowerShell):**
```powershell
Invoke-WebRequest -Uri "https://github.com/arc-framework/arc-cli/releases/download/{{ .Tag }}/arc-cli_windows_amd64.zip" -OutFile arc.zip
Expand All @@ -165,6 +169,5 @@ release:
```
footer: |
---

**Full Changelog**: https://github.com/arc-framework/arc-cli/compare/{{ .PreviousTag }}...{{ .Tag }}

**Full Changelog**: https://github.com/arc-framework/arc-cli/compare/{{ .PreviousTag }}...{{ .Tag }}
4 changes: 2 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -164,7 +164,7 @@ install: build
@echo ""
$(call log_info,Verifying installation...)
@which arc
@arc version
@arc --version

reinstall: clean build
$(call log_section,📦 Reinstalling A.R.C.)
Expand All @@ -174,7 +174,7 @@ reinstall: clean build
$(call log_success,Reinstalled!)
@echo ""
@which arc
@arc version
@arc --version

update:
$(call log_section,🔄 Updating A.R.C. CLI)
Expand Down
76 changes: 41 additions & 35 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,55 +6,61 @@ A powerful CLI tool for managing and orchestrating infrastructure with AI-powere

## Installation

### 📦 Quick Install (Manual - Recommended for now)
### 🍺 Homebrew (Recommended for macOS / Linux)

Until we fix the automated installer, please download manually:

1. **Go to [Releases](https://github.com/arc-framework/arc-cli/releases/latest)**

2. **Download the right file for your system:**
- **Mac (Apple Silicon M1/M2/M3)**: `arc-cli_darwin_arm64_v8.0.tar.gz`
- **Mac (Intel)**: `arc-cli_darwin_amd64_v1.tar.gz`
- **Linux (ARM64)**: `arc-cli_linux_arm64_v8.0.tar.gz`
- **Linux (x64)**: `arc-cli_linux_amd64_v1.tar.gz`
- **Windows**: `arc-cli_windows_amd64_v1.zip`

3. **Extract and install:**

**macOS/Linux:**

```bash
# Using gh cli (easiest):
gh release download [TAG] -p "arc-cli_darwin_arm64_v8.0.tar.gz" -R arc-framework/arc-cli
tar -xzf arc-cli_darwin_arm64_v8.0.tar.gz
sudo mv arc /usr/local/bin/
arc version

# Or manually extract the downloaded file:
tar -xzf ~/Downloads/arc-cli_*.tar.gz
sudo mv arc /usr/local/bin/
arc version
```
```bash
brew tap arc-framework/tap
brew install arc
```

**Windows:**
- Extract the ZIP file
- Move `arc.exe` to a folder in your PATH
To upgrade later:

### 🚀 One-Line Installer (Coming Soon)
```bash
brew upgrade arc
```

We're working on an automated installer. For now, please use the manual method above.
### 📦 One-Line Installer (macOS / Linux / Windows)

<!--
**macOS / Linux:**

```bash
curl -sSL https://raw.githubusercontent.com/arc-framework/arc-cli/main/install.sh | bash
```

If Homebrew is installed, the script will use it automatically. Otherwise it downloads the binary directly.

**Windows (PowerShell):**

```powershell
irm https://raw.githubusercontent.com/arc-framework/arc-cli/main/install.ps1 | iex
```
-->

### 📦 Manual Download

Download the binary directly from [Releases](https://github.com/arc-framework/arc-cli/releases/latest):

Pick the right file for your system:

- **Mac (Apple Silicon M1/M2/M3)**: `arc-cli_darwin_arm64.tar.gz`
- **Mac (Intel)**: `arc-cli_darwin_amd64.tar.gz`
- **Linux (ARM64)**: `arc-cli_linux_arm64.tar.gz`
- **Linux (x64)**: `arc-cli_linux_amd64.tar.gz`
- **Windows**: `arc-cli_windows_amd64.zip`

Then extract and install:

**macOS/Linux:**

```bash
tar -xzf arc-cli_*.tar.gz
sudo mv arc /usr/local/bin/
arc version
```

**Windows:**

- Extract the ZIP file
- Move `arc.exe` to a folder in your PATH

### 🔧 From Source (Developers)

Expand Down
55 changes: 55 additions & 0 deletions SERVICE.MD
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
# 📦 A.R.C. Service Registry & Codename Matrix

> **Architect's Note:**
> This isn't just a list of Docker containers; this is the cast of the movie we're building. Every service has a specific job, a personality, and a specific way of ruining your weekend if configured wrong.
>
> We use **codenames** because "Redis" is boring, but "Sonic" tells you _exactly_ what happens if he crashes (you die).

## 🛠️ The Master Service Table

| Service | A.R.C. Image | Type | Upstream Source | Codename | Role & "Why Him?" |
| :------------- | :----------------- | :------ | :----------------------------- | :---------------- | :-------------------------------------------------------------------------------------------- |
| **Traefik** | `arc-gateway` | INFRA | `traefik:v3.0` | **Heimdall** | **The Gatekeeper.** Opens the Bifrost (ports) only for authorized traffic. |
| **Unleash** | `arc-flags` | INFRA | `unleashorg/unleash-server` | **Mystique** | **The Shapeshifter.** Changes app behavior flags instantly without redeploying. |
| **Kratos** | `arc-identity` | INFRA | `oryd/kratos:latest` | **J.A.R.V.I.S.** | **The Butler.** "Welcome home, sir." Handles identity and authentication. |
| **Infisical** | `arc-vault` | INFRA | `infisical/infisical:latest` | **Nick Fury** | **The Spymaster.** Holds the nuclear codes (secrets). Paranoid for a reason. |
| **LiveKit** | `arc-voice-server` | INFRA | `livekit/livekit-server` | **Daredevil** | **The Radar.** Sees the world through sound waves (WebRTC). |
| **NATS** | `arc-pulse` | INFRA | `nats:alpine` | **The Flash** | **The Nervous System.** Information travels so fast it feels like telepathy. |
| **Pulsar** | `arc-stream` | INFRA | `apachepulsar/pulsar` | **Dr. Strange** | **Time Stone.** Replays history (events) and sees 14 million outcomes. |
| **Postgres** | `arc-db-sql` | INFRA | `postgres:16-alpine` | **Oracle** | **Long-Term Memory.** The photographic record of truth. |
| **Redis** | `arc-db-cache` | INFRA | `redis:alpine` | **Sonic** | **Working Memory.** "Gotta go fast." Holds context; if he stops, he dies. |
| **Qdrant** | `arc-db-vector` | INFRA | `qdrant/qdrant` | **Cerebro** | **The Finder.** Connects to every thought to find semantic matches. |
| **MinIO** | `arc-storage` | INFRA | `minio/minio` | **Tardis** | **Infinite Storage.** It's bigger on the inside (S3 compatible). |
| **SigNoz OTEL Collector** | `arc-friday-collector` | INFRA | `signoz/signoz-otel-collector` | **Friday Collector** | **The Spy.** Intercepts all signals and traces without being seen. Routes to Friday. |
| **SigNoz** | `arc-friday` | INFRA | `signoz/signoz` | **Friday** | **The Eyes.** Unified observability UI — traces, metrics, and logs in one place (:3301). |
| **Chaos** | `arc-chaos` | INFRA | `chaos-mesh/chaos-mesh` | **T-800** | **The Terminator.** "It absolutely will not stop until you are dead." Tests infra resilience. |
| **Brain** | `arc-brain` | SERVICE | `./services/reasoner` | **Sherlock** | **The Reasoner.** "Data! I cannot make bricks without clay." (LangGraph). |
| **Voice Agt** | `arc-voice-agent` | SERVICE | `./services/voice` | **Scarlett** | **The Voice.** Turns raw data into human connection (Her). |
| **Janitor** | `arc-janitor` | SERVICE | `./services/ops` | **The Wolf** | **The Fixer.** "I solve problems." Cleans up the mess efficiently. |
| **Billing** | `arc-billing` | SERVICE | `./services/billing` | **Alfred** | **The Manager.** Tracks the budget and manages the estate. |
| **Guard** | `arc-guard` | SERVICE | `./services/guardrails` | **RoboCop** | **Safety.** "Prime Directives." Stops the agent from shooting civilians. |
| **Critic** | `arc-critic` | SERVICE | `./services/critic` | **Gordon Ramsay** | **QA.** "This output is RAW!" Yells until the answer is perfect. |
| **Gym** | `arc-gym` | SERVICE | `./services/gym` | **Ivan Drago** | **Adversarial Trainer.** "I must break you." Attacks the Agent's logic. |
| **Semantic** | `arc-semantic` | SERVICE | `./services/semantic` | **Uhura** | **Translator.** Converts human speech to system commands (SQL/API). |
| **Mechanic** | `arc-mechanic` | SERVICE | `./services/healer` | **Statham** | **Self-Healing.** Slides under the car to fix the leak while running. |
| **Migrate** | `arc-migrate` | SIDECAR | `script` | **Pathfinder** | **Pioneer.** Maps the database schema before anyone else enters. |
| **Ingress** | `arc-ingress` | SIDECAR | `livekit/ingress` | **Sentry** | **The Watchtower.** Handles incoming RTMP/SIP streams. |
| **Egress** | `arc-egress` | SIDECAR | `livekit/egress` | **Scribe** | **The Recorder.** Archives the session to tape. |
| **Mailer** | `arc-mailer` | SIDECAR | `courier` | **Hedwig** | **Mail Delivery.** Delivers the message no matter what. |

---

## 🤖 The New Recruit: The T-800

We are escalating our testing protocols. We used to just punch the agent (**Ivan Drago**); now we hunt the infrastructure.

- **Service:** `arc-chaos` (Chaos Mesh)
- **Codename:** **T-800** (The Terminator)
- **Mission:** Infrastructure Resilience.
- **Methodology:**
- **Stress Testing the Mind (Ivan Drago):** Attacks the Prompt/Logic. Tries to jailbreak the LLM or make it hallucinate.
- **Stress Testing the Body (The Terminator):** Attacks the Server. Kills Redis containers, introduces 500ms network latency, and corrupts disk I/O.

> **Why Him?** > [cite_start]"It can't be bargained with. It can't be reasoned with. It doesn't feel pity, or remorse, or fear. And it absolutely will not stop, ever, until you are dead." [cite: 13]

If your system (A.R.C.) stays online, it is truly resilient. [cite_start]If not... _hasta la vista, baby_[cite: 15].
Loading
Loading