An animated AI companion that lives on your Mac desktop.
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.
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.
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.appThe 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.
- Tap
Option+Spacefor 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.
- 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.
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.
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.
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.
./companionctl chat
./companionctl ask "What was I just working on?"
./companionctl talk
./companionctl running # running | review | failed | success | idle- 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.
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 A PET is an independent project and is not endorsed by or affiliated with OpenAI, Anthropic, VOICEVOX, AivisSpeech, Kokoro, or their respective authors.
