Reference
Environment
chamoji reads a few environment variables: to turn the moving faces and the update check off, to pick colours, to find its key and cache, and to keep git from asking for a password mid-command. This page lists every one.
The face
Commands that wait, such as memory sync, show a small face on stderr while they work, with the step’s name. They end with a line such as ( ■‿■ ) ✓ Synced memory with origin: 2 entries in 3s. A bare chamoji plays a short intro. The faces use the logo’s foil colours on a dark terminal and plain text on a light one.
- Nothing moves, and the output is exactly what it was before faces, when stderr isn’t a terminal, in CI, with
TERM=dumb, with--json, or withCHAMOJI_NO_ANIMATION=1. - It never touches stdout, so pipes and
--jsonare unaffected. - Colour follows
FORCE_COLOR.FORCE_COLOR=0removes the colour, but the faces still move.
Faces and colour
- Name
CHAMOJI_NO_ANIMATION=1- Type
- exactly 1
- Description
Turn off the moving faces and the intro. Other values do nothing.
- Name
CHAMOJI_THEME- Type
- light | dark
- Description
Skip asking the terminal for its background, which chamoji otherwise does once. Light means no foil colours. Other values are ignored.
- Name
CHAMOJI_ASCII=1- Type
- exactly 1
- Description
Draw the faces and the logo in plain ASCII. This is the default on the old Windows console.
- Name
COLORFGBG- Type
- foreground;background
- Description
The fallback for the theme, when
CHAMOJI_THEMEisn’t set and the terminal doesn’t answer. A background of 7 or 15 is light; any other number is dark. Without either, chamoji assumes dark.
- Name
FORCE_COLOR- Type
- 0 to 3, true or false
- Description
0orfalseturns colour off, and the faces still move.1,2or3sets the colour level, whatever the terminal says.trueturns colour on at the level the terminal supports.
- Name
NO_COLOR- Type
- not read yet
- Description
chamoji 0.14.0 doesn’t read it, so the colour stays. Use
FORCE_COLOR=0instead.
- Name
WT_SESSION- Type
- set by Windows Terminal
- Description
On Windows, chamoji draws its usual faces when this is set, and ASCII when it isn’t, as on the old console.
CI and terminals
- Name
CI- Type
- any value
- Description
Set by most CI services. With it, nothing animates, there is no update check, the commit composer hook doesn’t open, and the one-time hints after
initand in a monorepo without areleasesection don’t show. It also sets the colour level when the output is a terminal orFORCE_COLOR=trueis set: full colour on GitHub Actions, Gitea Actions and CircleCI; 16 colours on Travis, AppVeyor, GitLab CI, Buildkite, Drone and Codeship. Other CI gets no colour, or 16 colours withFORCE_COLOR=true. A number inFORCE_COLORalways wins. On Windows, the Windows console’s level applies instead.
- Name
TERM=dumb- Type
- exactly dumb
- Description
Nothing animates, and there is no colour unless
FORCE_COLORasks for it.
The update check
The check runs at most once a day and only when stderr is a terminal. Install says what it sends.
- Name
CHAMOJI_NO_UPDATE_CHECK=1- Type
- exactly 1
- Description
Don’t check npm for a newer chamoji. The same as
--no-update-check.
- Name
NO_UPDATE_NOTIFIER- Type
- any value
- Description
The same, under the name other CLIs use.
- Name
XDG_CONFIG_HOME- Type
- absolute path
- Description
Where the cache goes:
$XDG_CONFIG_HOME/chamoji/update-check.json. A relative path is ignored. Default:~/.config.
- Name
APPDATA- Type
- path · Windows
- Description
Where the cache goes on Windows, when
XDG_CONFIG_HOMEisn’t set.
AI
- Name
TYPESAFE_API_KEY- Type
- string
- Description
The key for Jev, which
--aiand the composer’s suggestions use. If it isn’t in the environment, chamoji reads that one line from.env.local, then.env, and no other variable in those files. For--aionchangelog,next-versionandrelease, it reads them in the current folder, tracked files included. Memory search and the MCP server, with--ai, read them in the current folder and skip a file git tracks. The composer reads them at the repo root and skips a file git tracks. Skipping tracked files means a repo you clone can’t send your work to someone else’s account. Without--aior the composer’s opt-in, nothing is sent.
git and your PATH
- Name
GIT_SSH_COMMAND- Type
- command
- Description
For git commands that reach the network, such as
memory sync, chamoji setsGIT_TERMINAL_PROMPT=0, and usesssh -o BatchMode=yesunless you set an ssh command, here or incore.sshCommand. A missing password then fails the command instead of waiting for a prompt the face would draw over.
- Name
GIT_SSH- Type
- path
- Description
The older way to name an ssh program. When it’s set, chamoji leaves ssh alone, as with
GIT_SSH_COMMAND.
- Name
PATH- Type
- path list
- Description
init --agentschecks whetherchamojiis on it. When it isn’t, the server in.mcp.jsonstarts withnpx --yes @chamoji/cli mcpinstead.setupoffers the Claude Code step whenclaudeis on it.
Not a variable
CHAMOJI_NO_CARD=1 looks like one, but the Claude Code hook reads it from the text of the agent’s command: CHAMOJI_NO_CARD=1 git commit -m "…" lets a commit without a Why: line through. Use it when you’ve told the agent to skip cards.