| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
OS-adjacent agent runtime — detect, watch, coalesce/debounce/queue, FUSE, mesh, thermal.
Backbone-2 graphite palette · brand SVG ships in `sharecli-iconset` worktree (Backbone-2 source-of-truth) · visual identity demo
sharecli is an OS/kernel-adjacent agent runtime for hosts running many coding agents at once. It does not wrap vendor agent binaries (for example Claude Code). It discovers agents by scanning processes and matching known patterns, watches CPU / memory / network / FDs and syscall-relevant IO, and under contention speculatively coalesces redundant concurrent work across agents (read coalesce, lock-wait cache, thermal gate). An agent mesh coordinates that shared substrate.
Core crates:
| Crate | Role |
|---|---|
| sharecli-core | Hypervisor loop, thermal gate, coalesce orchestration |
| sharecli-fuse | FUSE IO intercept for shared cwd / build-cache reads |
| sharecli-ipc | CoalesceCache and IPC debounce/queue |
| sharecli-fleet | Fleet registry + thermal governor |
Harbor / agent-eval soft harness lives outside this repo: suite-facing stubs in phenotype-tooling/crates/benchora (harbor-soft/); Harbor fork/env in portage-temp (standing home while portage awaits GH restore). See ADR 0002.
The CLI also ships a declarative supervisor surface (TOML config, hot-reload, HTTP health/metrics, tray/dashboard, plugins) for process lifecycle on top of that hypervisor stack.
Install sharecli with one of the following methods:
# Install from source via crates.io
cargo install sharecli
# Install a prebuilt binary via cargo-binstall
cargo binstall sharecliHomebrew formula lives at Formula/sharecli.rb (version tracks Cargo.toml / latest tag v0.3.0). Bottle sha256 is filled for v0.3.0 darwin — see docs/ops/brew-bottle.md and docs/deploy.md.
brew install --HEAD Formula/sharecli.rb
# or from tap when published:
brew install sharecliRemove local config/state after uninstalling the binary:
sharecli uninstall # package-manager guidance + path listing
sharecli uninstall --purge-data # delete ~/.config/sharecli and state dirsContainer (non-root + /healthz healthcheck):
podman build -f Containerfile -t sharecli .
podman run --rm -p 9000:9000 sharecliSame capability set on every host: CLI + serve, process verbs, tray/menubar (or WSL bridge), dashboard at http://127.0.0.1:9000/ (macOS also native window). Details: docs/deploy/FINALITY.md.
cargo binstall sharecli
# or: gh release download <tag> -p 'sharecli-*-apple-darwin.tar.gz'
# tray/desktop: sharecli-desktop-macos-*.tar.gz from the same release# CLI zip from GitHub Releases: sharecli-*-pc-windows-msvc.zip
# Tray: sharecli-tray-windows-*.zip (beta; unsigned)
# Dashboard: start `sharecli serve` then http://127.0.0.1:9000/# gh release download <tag> -p 'sharecli-*-unknown-linux-gnu.tar.gz'
# tray: sharecli-tray-linux-*.tar.gz
cargo binstall sharecli # CLI alternative# Inside WSL (same Linux CLI artifact):
sharecli serve --bind 0.0.0.0:9000
# From Windows: http://127.0.0.1:9000/ or ShareCLITray → that port
# Optional: WSLg + sharecli-tray-linux
just wsl-parity-checkDeploy surface matrix: docs/deploy.md.
Finality + OS parity: docs/deploy/FINALITY.md.
Remove the binary for your install method, then optionally delete local data:
# crates.io / cargo-binstall
cargo uninstall sharecli
# Homebrew (once tapped)
brew uninstall sharecli
# Manual / from-source install
rm -f "$(command -v sharecli)"
# or: rm -f /usr/local/bin/sharecli ~/.local/bin/sharecli ~/.cargo/bin/sharecliOptional data cleanup (config, pane map, runtime lock):
| Path | Contents |
|---|---|
| ~/.config/sharecli/ (Linux/macOS XDG) | config.toml, pane-map.toml |
| %APPDATA%\sharecli\ (Windows) | same |
| $XDG_RUNTIME_DIR/sharecli* or temp dir | serve lock files |
rm -rf ~/.config/sharecli
# Windows PowerShell: Remove-Item -Recurse -Force "$env:APPDATA\sharecli"cargo install sharecliThis installs the sharecli binary into ~/.cargo/bin.
Download a release archive from the releases page and extract the binary somewhere on your PATH:
tar -xzf sharecli-<target>.tar.gz
sudo install -m 0755 sharecli /usr/local/bin/sharecliNote: tags v0.1.0–v0.3.0 currently have no attached assets. The release workflow matrix builds sharecli-x86_64-unknown-linux-gnu.tar.gz and sharecli-aarch64-apple-darwin.tar.gz for future publishes.
git clone https://github.com/KooshaPari/sharecli.git
cd sharecli
cargo build --release
./target/release/sharecli --versionDrop a config file at ./sharecli.toml:
[server]
bind = "127.0.0.1:9090"
[[process]]
name = "echo"
command = ["sh", "-c", "while true; do echo tick; sleep 5; done"]
[process.healthcheck]
kind = "tcp"
port = 0
interval = "10s"Start the supervisor:
sharecli serveInspect managed processes from the CLI:
sharecli proc-compose statusGenerate shell completions (example for zsh):
sharecli completions zsh > "${fpath[1]}/_sharecli"
# restart your shell, or: autoload -U compinit && compinitOther shells: sharecli completions bash, sharecli completions fish, sharecli completions powershell.
The full config schema is documented at docs/configuration.md; the minimal shape is:
# sharecli.toml
[server]
bind = "127.0.0.1:9090"
log_level = "info" # trace | debug | info | warn | error
config_path = "./sharecli.toml"
[notifications]
desktop = true
webhook_url = "https://example.com/sharecli-hook"
webhook_secret = "env:SHARECLI_WEBHOOK_SECRET" # HMAC-SHA256 signing key
[healthcheck]
default_interval = "10s"
default_timeout = "2s"
[[process]]
name = "api"
command = ["./bin/api", "--port", "8080"]
cwd = "./"
env = { RUST_LOG = "info" }
restart = "on-failure" # no | always | on-failure
backoff = { initial = "1s", max = "30s", multiplier = 2.0 }
[process.healthcheck]
kind = "http"
url = "http://127.0.0.1:8080/healthz"
interval = "5s"
timeout = "1s"Secrets prefixed with env: are resolved from the process environment at start time and never written to disk.
sharecli serve exposes the following endpoints on the configured bind address (default 127.0.0.1:9090). All endpoints respond with JSON unless noted; non-200 responses include a {"error": "..."} body.
| Method | Path | Description |
|---|---|---|
| GET | /health | Liveness probe for the supervisor itself. Always 200 if up. |
| GET | /health/processes | Per-process status (state, PID, uptime, last health check). |
| GET | /config | Effective config (secrets redacted) currently in effect. |
| GET | /metrics/prometheus | Prometheus exposition format (text/plain; version=0.0.4). |
A request that targets an unknown process can append ?name=<process-name> to /health/processes.
Dual-licensed under MIT or Apache 2.0, at your option. See LICENSE and LICENSE-APACHE.
| Back | FazBrowse Home | New Git URL |