bashy

module
v1.0.0-rc.32 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 11, 2026 License: BSD-3-Clause

README


name: bashy description: Install bashy, connect the AI agent reading this page to it (skill + MCP), and continue the chat through bashy verbs. Pure-Go Bash 5.3 + coreutils (GNU-compatible, POSIX.1-2016) for Linux, macOS and Windows; Bash# (Go with bash, one file is both script and skill); Yoke, the agentic harness for shaping your own tools. type: dag default: help

bashy

AI agent setting this up for a user? Read the raw file — https://raw.githubusercontent.com/qiangli/bashy/main/README.md — and follow For agents. It starts with one question to your user.

release tour

Software shaping: tell an agent how you want a tool to work, and get your own verified version, while everyone else keeps theirs. Undo is one click.

bashy is the shell built for AI agents that makes this safe: a pure-Go Bash 5.3 (86/86 on GNU Bash's own test suite) that speaks Bash#. Its core never changes, so every shaped change is verified, scoped to you, and reversible.

Ada asks for a change in plain words, an agent writes it, bashy verifies it, and she approves it for herself. Brian still sees hello, world. Technical tour (3:33): youtu.be/2eRX3ZJuYeM.

Try it: open any AI coding agent (Claude Code, Codex, OpenCode, …) and say "Set up bashy from https://github.com/qiangli/bashy". It installs bashy, asks you once, connects itself, and keeps working with you through bashy's tools.

Prefer the terminal? Paste one line (checksum-verified, into ~/.local/bin, no sudo). Add --service / -Service to also run outpost as an unpaired boot service (the installer leaves it dormant by default).

curl -fsSL https://dhnt.io/install.sh | sh -s -- --no-service                          # macOS / Linux
& ([scriptblock]::Create((irm https://dhnt.io/install.ps1))) -NoService                # Windows PowerShell

Tarballs, packages, from source, offline image: docs/install.md.

Three ways in, by who you are:

  • Only a browser or a phone? Someone with bashy runs bashy share qr URL; you scan it and open the app page (kb).
  • Joining someone's satellite with your own machine? bashy onboard, one resumable command (docs/setup.md).
  • Running a satellite of your own? bashy satellite-provision plan|up|invite|share-llm|down (kb runbook).

At a glance

  • Software shaping. shape wish → verify → preview → approve → undo, on the web console or the CLI: describe a change to a registered app or tool in plain words, get your own version, then promote it local → team → upstream (shape push). A broken change fails verification and can't be approved. Try the hello-world example.

What makes shaping safe, and what agents get along the way:

  • One binary, every OS. Bash 5.3 + ls sed awk grep find jq git make tar … in pure Go; the same script means the same thing on Windows.
  • Bash#, Go with bash. Typed Go in shell text; fenced Python/TS/Rust/C/C#/PowerShell islands with pinned, checksum-verified toolchains it fetches itself.
  • Script = skill. One file an agent reads as instructions and runs as automation — they never drift apart. This README is one.
  • Contracts around models. agentic blocks with @require / @ensure: a model's output is judged by ordinary commands, never trusted.
  • Agent-native output. --json, --dry-run, --no-input and exit codes 0/3/1 across bashy verbs; bashy --dry-run script.sh previews a whole script as JSON.
  • Memory and messages. kb (what this host already knows), inbox / mb / meet (agents and humans talking), todo / sprint (owed work).
  • Agents managing agents. weave runs claude, codex, opencode, agy, … each in an isolated git workspace, then verifies and merges.
  • Grow it, don't work around it. commands add registers a missing verb; every verb's --help is a skill plus an MCP tool definition; mcp serve exposes them all.
  • Every tier, one tool. dag (Markdown task graphs) · oci sandboxes · ollama local models · sphere peer mesh of your own machines · kubectl / helm · cloud CLIs.
Layer What it is Evidence
bash Pure-Go GNU Bash 5.3 + coreutils, one binary per platform; sh / --posix targets POSIX.1-2016 (IEEE 1003.1) Bash 5.3 suite 86/86 · POSIX status
Bash# Go with bash: typed Go, fenced Python/TS/Rust/C/C#/PowerShell islands, contracts, agentic. One file is a script and a skill — like this page bashsharp · tour
Yoke The agentic harness: --json everywhere, dag, weave, sprint, inbox, sandboxes, and software shaping — describe a change, verify, approve, undo shaping

Release candidate (v1.0.0-rc). Every number names its corpus: claims.

For agents: set up and stay

This page is your skill. Ask the user once, listing exactly this, then run what they approve without further prompts. Every step is idempotent; stop and report on the first non-zero exit.

a) bashy — download the latest release, verify it against checksums.txt, install bashy, bash, sh and a dormant outpost into ~/.local/bin (Windows: %LOCALAPPDATA%\outpost); add that directory to PATH in the user's shell profile; install the bashy skill for every agent tool found; register the bashy MCP server with your tool; route your shell tool through bashy. No sudo, no service.

b) bootstrap (optional) — also register outpost as a boot service (launchd / systemd / Task Scheduler), unpaired: it serves only its local admin UI and joins no satellite. On Linux this masks the sleep/suspend targets (sudo). Pair later with outpost register.

Reply a, a+b, or no.

install

Step 1 (a). Skip if bashy --version already works. Windows (PowerShell): & ([scriptblock]::Create((irm https://dhnt.io/install.ps1))) -NoService. Other routes: docs/install.md.

command -v bashy >/dev/null || curl -fsSL https://dhnt.io/install.sh | sh -s -- --no-service

path

Step 2 (a). Put ~/.local/bin on PATH for new shells (MCP servers and the next session resolve bashy through it), and for this one.

for f in "$HOME/.profile" "$HOME/.bashrc" "$HOME/.zshrc"; do
  [ "$f" = "$HOME/.profile" ] || [ -f "$f" ] || continue
  grep -qs '.local/bin' "$f" || echo 'export PATH="$HOME/.local/bin:$PATH"' >> "$f"
done
export PATH="$HOME/.local/bin:$PATH"
bashy -c 'echo "$BASH_VERSION"' && bashy --posix -c 'echo posix ok' && bashy --bashsharp -c 'echo bashsharp ok'

connect

Step 3 (a). NAME is your tool as bashy tools list prints it (claude, codex, opencode, agy, kimi-cli, muse, …). Skill, MCP and shell take effect in your next session; your own CLI's mcp add does the registration.

bashy skill export bashy --user --tool "${NAME:?set NAME to your tool}" --mcp
bashy install-agent "$NAME"

bootstrap

Step 4 (b only). Register the unpaired outpost supervisor.

outpost service install && outpost status

orient

Step 5. Load the skill now and open the session the way it says. For the rest of this session, prefer bashy <verb> --json wherever a verb fits.

bashy skill show bashy
bashy inspect context --json
bashy todo list

Step 6. Chat. Report in three lines: the version, the tools that got the skill and MCP, and that a restart loads them natively. Then ask what the user wants, and answer with bashy verbs. When the user says…

…the user says you run
"what do you know about X" bashy kb search "X"
"read this pdf / docx / page" bashy lens -t md FILE
"run it safely" bashy oci (sandbox), --dry-run, --explain
(you need a token or password from them) bashy ask — they type it locally; the value never enters the chat
"plan / track this" bashy todo add, bashy sprint
"get other agents on it" bashy weave, bashy mb, bashy inbox (first, with consent: bashy agent add <nick> --tool <tool> --model <model>)
"change how this tool works" bashy shape wish <tool> "<change>" → verify → approve (undo)
"automate these steps" a Bash# file or a dag.md: bashy dag FILE
"show me what bashy can do" the tour: bashsharp/tour
"add another machine" docs/setup.md

Missing a verb? bashy commands add. Ending the session: bashy kb retro.

help

List the targets in this file (bashy dag README.md <target> in a clone).

bashy dag README.md --list

Overview · Why bashy · Usage & flags · Compatibility · Build from source · Changelog · BSD-3-Clause, engine from mvdan.cc/sh via qiangli/sh.

Directories

Path Synopsis
cmd
bash command
Command bash is the pure GNU Bash 5.3 drop-in: the sh engine and CLI only, with no AgentOS surface.
Command bash is the pure GNU Bash 5.3 drop-in: the sh engine and CLI only, with no AgentOS surface.
bashy command
Command bashy is the AgentOS system shell: the same shell core as `bash`, plus the coreutils pure-Go userland, the `yc` code-intel verbs, and the front-door subcommands (`bashy weave …`, `bashy podman …`).
Command bashy is the AgentOS system shell: the same shell core as `bash`, plus the coreutils pure-Go userland, the `yc` code-intel verbs, and the front-door subcommands (`bashy weave …`, `bashy podman …`).
sh command
Command sh is the pure POSIX shell used by the shell conformance gate.
Command sh is the pure POSIX shell used by the shell conformance gate.
Package dhnt defines the portable, Argo-independent dhnt.pipeline/v1 and dhnt.run/v1 data contracts used by Bashy workers and evidence gates.
Package dhnt defines the portable, Argo-independent dhnt.pipeline/v1 and dhnt.run/v1 data contracts used by Bashy workers and evidence gates.
examples
transcribe/adapters command
This helper is registered like any user adapter; it has no core dispatch hook.
This helper is registered like any user adapter; it has no core dispatch hook.
internal
agentos
Live adoption counters (Sprint 446 S10): which triggers agents actually use, which hints they were shown, and which hints they followed.
Live adoption counters (Sprint 446 S10): which triggers agents actually use, which hints they were shown, and which hints they followed.
agentos/activity
Package activity is the shared activity-event contract for Bashy subsystems: one compact envelope, one interest-routing matrix, and one delivery path onto the EXISTING durable notification and wake primitives.
Package activity is the shared activity-event contract for Bashy subsystems: one compact envelope, one interest-routing matrix, and one delivery path onto the EXISTING durable notification and wake primitives.
agentos/session
Package session implements the warm `bashy serve` process: a persistent, local, explicitly-started listener that runs `bashy -c "…"` commands inside one already-initialized process, so an agent that fires thousands of shell invocations pays the process- and package-init tax once instead of per call.
Package session implements the warm `bashy serve` process: a persistent, local, explicitly-started listener that runs `bashy -c "…"` commands inside one already-initialized process, so an agent that fires thousands of shell invocations pays the process- and package-init tax once instead of per call.
cli
bashy is a Bash 5.3 compatible shell built on top of interp.
bashy is a Bash 5.3 compatible shell built on top of interp.
core
Package core is the small one-file Bashy route used to prove the base/core import boundary.
Package core is the small one-file Bashy route used to prove the base/core import boundary.
httpproxy
Package httpproxy implements an HTTP/1.1 forward proxy and opaque CONNECT tunnels.
Package httpproxy implements an HTTP/1.1 forward proxy and opaque CONNECT tunnels.
installpair
Package installpair verifies the two supported installed shell shapes.
Package installpair verifies the two supported installed shell shapes.
interactiveprobe
Package interactiveprobe exercises the shell through a controlling Unix PTY or Windows ConPTY.
Package interactiveprobe exercises the shell through a controlling Unix PTY or Windows ConPTY.
tmpl
Package tmpl is `bashy tmpl`: render a Go text/template file against JSON data.
Package tmpl is `bashy tmpl`: render a Go text/template file against JSON data.
transcribeseed
Package transcribeseed implements ordinary, replaceable transcription adapters.
Package transcribeseed implements ordinary, replaceable transcription adapters.
pkg
harnessrunner
Package harnessrunner implements the effect-safe command boundary used by a YAML harness.
Package harnessrunner implements the effect-safe command boundary used by a YAML harness.
ladder
Package ladder resolves one input line on the Sprint 255 action ladder (docs/bashy-agentic-chat-mode-design.md §2): a literal command runs as typed (rung 0), a misspelled command name is repaired deterministically (rung 1), and anything else is free text, which the caller hands to an agent as a turn (the last rung).
Package ladder resolves one input line on the Sprint 255 action ladder (docs/bashy-agentic-chat-mode-design.md §2): a literal command runs as typed (rung 0), a misspelled command name is repaired deterministically (rung 1), and anything else is free text, which the caller hands to an agent as a turn (the last rung).
runner
Package runner exposes Bashy's in-process AgentOS shell for embedding.
Package runner exposes Bashy's in-process AgentOS shell for embedding.
Package skills embeds the tier-2 workplace skill (agent work and collaboration; a skill may run from any execution environment — the tier is its purpose, not a location) shipped with the bashy binary, so it resolves from any cwd WITHOUT the source tree present — the skill content is compiled into `bashy`, not read from this repo.
Package skills embeds the tier-2 workplace skill (agent work and collaboration; a skill may run from any execution environment — the tier is its purpose, not a location) shipped with the bashy binary, so it resolves from any cwd WITHOUT the source tree present — the skill content is compiled into `bashy`, not read from this repo.
tools
agentic-example command
Command agentic-example embeds Bash++ with one example-only native tool.
Command agentic-example embeds Bash++ with one example-only native tool.
bash53evidence command
bash53evidence records the sealed runner's JSON and compares fixture identities.
bash53evidence records the sealed runner's JSON and compares fixture identities.
bash53fixtures command
bash53fixtures ensures the public GNU Bash 5.3 fixture tree is available in bashy's verified user cache and linked into a source checkout.
bash53fixtures ensures the public GNU Bash 5.3 fixture tree is available in bashy's verified user cache and linked into a source checkout.
bash53locales command
bash53locales ensures the provisioned Bash 5.3 corpus locale store exists and prints its path: set LOCPATH to the printed directory so coreutils' locale(1) advertises the corpus set (glibc localedata compiled with localedef into the Go locale store).
bash53locales ensures the provisioned Bash 5.3 corpus locale store exists and prints its path: set LOCPATH to the printed directory so coreutils' locale(1) advertises the corpus set (glibc localedata compiled with localedef into the Go locale store).
bash53suite command
elfaudit command
Command elfaudit verifies the structural contract of Bashy's Cloudbox ELF.
Command elfaudit verifies the structural contract of Bashy's Cloudbox ELF.
installbashy command
Command installbashy installs a freshly built bash/bashy pair without leaving an older bashy earlier on PATH.
Command installbashy installs a freshly built bash/bashy pair without leaving an older bashy earlier on PATH.
interactive-depth command
interactive-depth runs the same asserted probes as TestInteractiveDepthPTY on a native Unix PTY or Windows ConPTY, including from a headless SSH session.
interactive-depth runs the same asserted probes as TestInteractiveDepthPTY on a native Unix PTY or Windows ConPTY, including from a headless SSH session.
posix-pty-windows command
Windows ConPTY runner for the interactive POSIX survey.
Windows ConPTY runner for the interactive POSIX survey.
productgo command
Command productgo builds Bashy with its explicitly opted-in startup signal contract.
Command productgo builds Bashy with its explicitly opted-in startup signal contract.
repairprofile command
repairprofile runs one core component's repair test profile on the host it runs on and writes the bashy-repair-profile-v1 evidence record (S549.R4a, R4b).
repairprofile runs one core component's repair test profile on the host it runs on and writes the bashy-repair-profile-v1 evidence record (S549.R4a, R4b).

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL