Reference

Environment

environment.mdEdit on GitHub

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 with CHAMOJI_NO_ANIMATION=1.
  • It never touches stdout, so pipes and --json are unaffected.
  • Colour follows FORCE_COLOR. FORCE_COLOR=0 removes 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_THEME isn’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

    0 or false turns colour off, and the faces still move. 1, 2 or 3 sets the colour level, whatever the terminal says. true turns 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=0 instead.

  • 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 init and in a monorepo without a release section don’t show. It also sets the colour level when the output is a terminal or FORCE_COLOR=true is 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 with FORCE_COLOR=true. A number in FORCE_COLOR always 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_COLOR asks 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_HOME isn’t set.

AI

  • Name
    TYPESAFE_API_KEY
    Type
    string
    Description

    The key for Jev, which --ai and 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 --ai on changelog, next-version and release, 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 --ai or 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 sets GIT_TERMINAL_PROMPT=0, and uses ssh -o BatchMode=yes unless you set an ssh command, here or in core.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 --agents checks whether chamoji is on it. When it isn’t, the server in .mcp.json starts with npx --yes @chamoji/cli mcp instead. setup offers the Claude Code step when claude is 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.

Was this page helpful?