Skip to content

Repository files navigation

NOT A PET

An animated AI companion that lives on your Mac desktop.

Chuta cycling through the built-in expression portraits

NOT A PET gives Codex CLI or Claude Code a persistent character: someone you can talk to, bring into a project, and return to later without starting over. It uses the CLI subscriptions already signed in on your Mac, so there is no separate API key to configure.

It ships with Chuta as the starter character. You can import your own animated characters, each with an independent persona, memory, voice, and optional skins.

Why

AI coding sessions are powerful, but they disappear behind terminal windows. NOT A PET keeps one small, expressive presence on the desktop.

  • One shortcut for quick questions or push-to-talk.
  • Persistent chat and per-character memory across Codex and Claude.
  • Read-only project sessions by default, with optional edit access.
  • Local character packages, transcripts, attachments, and voice settings.
  • No NOT A PET account, server, or telemetry.

Install

Requirements:

  • macOS 13 or later.
  • Xcode Command Line Tools (xcode-select --install).
  • A signed-in Codex CLI or Claude Code.
git clone https://github.com/txmn/not-a-pet.git
cd not-a-pet
./build.sh
open NotAPet.app

The build uses Apple frameworks only and produces an ad-hoc-signed app. NOT A PET is developed on Apple Silicon; Intel Macs are currently untested.

Use

  • Tap Option + Space for the compact Talk field.
  • Hold Option + Space, speak, and release to send.
  • Double-click Chuta to talk.
  • Open Chat from the right-click menu for persistent conversation, attachments, and work sessions.
  • Right-click for voice, character, activity, size, and visibility settings.

The Chat session picker separates everyday conversation from project work. Start a session in a folder or reconnect an existing Codex or Claude Code session. Every connection opens Read only; edit access must be selected explicitly.

Features

  • Animated desktop character with twenty expression portraits.
  • Codex and Claude backends with shared character memory.
  • Existing Codex and Claude Code session discovery and resume.
  • Image and file attachments: up to four files, 25 MB each.
  • Autonomous check-ins with configurable frequency.
  • Multiple characters and appearance skins.
  • Japanese and English interface.
  • Optional local speech synthesis.
  • Small command-line controller for shortcuts and automation.

Bring your own character

Open Settings → Character → Import package and choose a folder containing:

my-character/
  spritesheet.webp       # v2, 1536 × 2288 px
  expressions/
    normal.png           # required
    smile.png            # optional
  pet.json               # optional metadata, persona, identity, and skin

Imported packages are copied to ~/Library/Application Support/Companion/characters/. A stable characterId keeps memory and voice attached to the character while skinId changes only its appearance.

Create character from images is experimental. It requires the hatch-pet skill and image-processing runtime from a compatible Codex installation; NOT A PET does not bundle either dependency. Importing a completed package works without them.

Voice

macOS say works out of the box. You can also run VOICEVOX, AivisSpeech, or Kokoro locally. NOT A PET discovers available speakers from the selected engine on 127.0.0.1.

Voice engines and individual voice libraries have their own terms, often including attribution requirements. Check VOICEVOX's terms and the terms for every voice you use.

Privacy and security

NOT A PET is local-first, not offline. Your local CLI sends conversations to OpenAI or Anthropic, and files or command output read by an agent may be included. Work sessions start read-only, but that setting is enforced by the selected CLI rather than by an additional NOT A PET sandbox.

  • Privacy — what leaves your Mac, what is stored, and how to delete it.
  • Security — work-session permissions, attachments, and reporting vulnerabilities.

Command line

./companionctl chat
./companionctl ask "What was I just working on?"
./companionctl talk
./companionctl running   # running | review | failed | success | idle

Known limitations

  • macOS only; Intel Macs are untested.
  • No notarized binary distribution yet. Build from source.
  • Character creation from images depends on Codex components not shipped here.
  • Attachments are retained until removed manually.
  • Automated tests do not yet cover app behavior; CI type-checks and builds.

License

Code and documentation are available under the MIT License.

The bundled Chuta spritesheet, expression portraits, app icon, and demo GIF are available under CC BY 4.0, including commercial use with attribution.

Imported and generated character packages keep their own licensing terms.

Not affiliated

NOT A PET is an independent project and is not endorsed by or affiliated with OpenAI, Anthropic, VOICEVOX, AivisSpeech, Kokoro, or their respective authors.

About

An animated AI companion that lives on your Mac desktop.

Topics

Resources

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages