Skip to content

CLI overview

The yachiyo command drives the same local instance the desktop app uses. Most of it reads and writes ~/.yachiyo directly, so it works whether or not the app is running — the exception is send, which needs a live app.

yachiyo <namespace> <subcommand> [args...] [flags...]

Output is JSON unless a command says otherwise. yachiyo <namespace> --help prints detailed help for any namespace.

NamespacePurpose
soulManage evolving persona traits
providerManage AI providers and models
agentSubagent runtime mode and ACP profiles
configRead and write configuration values
threadSearch and inspect conversation history
scheduleManage scheduled tasks and run history
channelList channel users and groups, set status and labels
sendSend notifications and channel messages
FlagDefaultDescription
--settings <path>~/.yachiyo/config.tomlSettings file path
--soul <path>~/.yachiyo/SOUL.mdSoul document path
--db <path>~/.yachiyo/yachiyo.sqliteDatabase file path
--payload <json>JSON body for mutation commands
--limit <n>5Max results for listing commands
--jsonoffRaw JSON instead of human-readable text
--helpHelp for a command or namespace

Some commands override the limit default — thread list uses 10, schedule runs uses 20.

The path flags exist so you can point the CLI at an isolated workspace. Setting YACHIYO_HOME moves all three at once, which is usually easier.

Every command replaces apiKey values with *** before printing, including yachiyo config get. Reading config.toml directly is the only way to print a provider key.

Channel bot tokens in channels.toml are not covered by that redaction.

--json gives you machine-readable output for everything:

Terminal window
# Threads updated recently, as JSON
yachiyo thread list --limit 20 --json | jq '.[] | .title'
# Notify yourself when a long build finishes
make release && yachiyo send notification "Release build done" --title "CI"

Ask Yachiyo first:

The yachiyo command isn’t found in my terminal. Fix it.

It has the whole diagnostic path in its help skill and shell access to run it, including editing your shell profile. The app not being on your PATH does not stop the app from fixing your PATH.

Diagnosing it yourself

The desktop app writes ~/.yachiyo/bin/yachiyo on every launch and then tries to make it reachable. When that has not worked, walk down this list.

1. Does the wrapper exist?

Terminal window
ls -la ~/.yachiyo/bin/yachiyo

Missing means the app has not generated it — relaunch Yachiyo.

2. Is the symlink there?

Terminal window
ls -la /usr/local/bin/yachiyo

If it is missing, check whether the directory exists and is writable:

Terminal window
ls -ld /usr/local/bin

You can create the link by hand:

Terminal window
sudo mkdir -p /usr/local/bin
sudo ln -sf ~/.yachiyo/bin/yachiyo /usr/local/bin/yachiyo

3. Is ~/.yachiyo/bin on your PATH?

Terminal window
echo $PATH | tr ':' '\n' | grep yachiyo

If not, the app adds it to your shell profile on launch — check ~/.zshrc, ~/.bashrc / ~/.bash_profile, or ~/.config/fish/config.fish. To add it yourself:

Terminal window
export PATH="$HOME/.yachiyo/bin:$PATH" # zsh / bash
Terminal window
fish_add_path ~/.yachiyo/bin # fish

Either way you need a new terminal, or to source the profile.