Getting started
Install
Add the ByJG package repository, then install the package:
# Debian/Ubuntu
sudo apt install parolsh
# Fedora/RHEL
sudo dnf install parolsh
On macOS (or Linux) with Homebrew:
brew install byjg/tap/parolsh
Homebrew builds Parolsh from source from the
ByJG tap, installing Rust only for the
build. The sample configuration is then in
$(brew --prefix)/share/parolsh/config.sample.toml.
The Linux package installs a single binary, /usr/bin/parolsh, and depends
only on bash.
Install an agent
ACP agents are not dependencies: install at least one before the first run. For example, Claude:
npm install -g @agentclientprotocol/claude-agent-acp
Agents lists the others (Codex, Gemini CLI, Qwen Code, Kilo Code, Goose, ...) with their install command and login.
First run
The first time Parolsh starts, it creates your configuration,
~/.config/parolsh/config.toml, from its built-in sample:
- every agent it finds on your
PATH(claude-agent-acp,codex-acp,gemini,qwen,kilo,goose) is already enabled; - the first one found becomes
default_agent, in that order; - everything else stays in the file as commented examples.
Created /home/joao/.config/parolsh/config.toml with claude, qwen. Using claude; switch with #agent <name>.
[claude] ~/projects/wallet ✦
If no agent is found, the file is created with everything commented out:
install an agent, then uncomment its block and default_agent. Parolsh never
overwrites an existing file; delete it to run the first-run setup again.
#config shows which configuration files are used, and #config sample
prints the full sample. See Configuration for every
option.
Start it
Run parolsh in the directory you want to work in:
cd ~/projects/wallet
parolsh
Parolsh starts the configured agent in the background and opens a new
conversation in that directory, the same way claude or codex behave when
started inside a folder. The prompt appears right away; a question typed
before the agent is ready waits for it. Each new parolsh starts a new,
independent conversation.
On an ANSI terminal, Parolsh greets you with a banner showing the agent, its mode and the directory:
╭─────────╮ Parolsh x.y.z
│ > _ │ agent: claude (auto)
╰─┬───────╯ project: ~/projects/wallet
╱ #help
Speak to your terminal. Natural language first.
[claude] ~/projects/wallet ✦
Type #help to see the commands and #exit (or Ctrl+D) to leave.
First commands
[claude] ~/projects/wallet ✦ what changed today? ask the agent
[claude] ~/projects/wallet ✦ !git status run a shell command
[claude] ~/projects/wallet ✦ !+docker ps run it, and share its output with your next question
[claude] ~/projects/wallet ✦ !bash open a Bash session, `exit` to come back
[claude] ~/projects/wallet ✦ ! lock: plain text goes to bash (❯), `?` unlocks
[claude] ~/projects/wallet ✦ #cd ~/projects/billing switch to another project
[claude] ~/projects/wallet ✦ #project init mark the current directory as a project
[claude] ~/projects/wallet ✦ #new start a new conversation
The answer is printed as it arrives. Ctrl+C cancels it and returns to the
prompt. Ctrl+Z gives you the prompt back while the agent goes on with it,
see Turns in the background.
To start with plain text going to bash, run parolsh --input=shell or set
input = "shell" in the configuration (see
Shell mode).
To pick up where you left off, parolsh --continue goes back to the last
conversation of this project, and parolsh --resume <n> to session n (see
Resuming a session).
parolsh --version prints the version. A build that is not the release, from
a later commit or with changed files, says so:
parolsh 0.6.0-dev (85cb214, dirty)
Use it from scripts
parolsh -c runs a command with a plain, non-interactive bash -c, without
the agent and without loading ~/.bashrc:
parolsh -c 'echo "$0 $1"' name first
The exit code is the command's exit code.