harpy-theme

Harpy theme for Pi — dark (harpy-noct) and light (harpy-insone) variants inspired by the Harpy eagle, apex predator of the Amazon

Packages

Package details

theme

Install harpy-theme from npm and Pi will load the resources declared by the package manifest.

$ pi install npm:harpy-theme
Package
harpy-theme
Version
1.2.0
Published
Oct 2, 2026
Downloads
565/mo · 509/wk
Author
bscordeiro
License
MIT
Types
theme
Size
2.3 MB
Dependencies
0 dependencies · 0 peers
Pi manifest JSON
{
  "image": "https://raw.githubusercontent.com/bscordeiro/harpy-theme/main/assets/mockup-noct.svg",
  "themes": [
    "./themes"
  ]
}

Security note

Pi packages can execute code and influence agent behavior. Review the source before installing third-party packages.

README

Harpy-theme 🦅

Harpy theme for the pi coding agent — dark (harpy-noct) and light (harpy-insone) variants.

Inspired by the harpy eagle, apex predator of the Amazon rainforest — power, precision and elegance.

Preview

harpy-noct (dark)

screenshot

harpy-insone (light)

harpy-insone mockup


Validation

Contrast and semantic separation are enforced by test/check-contrast.mjs:

npm test

npm test runs validator regression tests and checks both theme variants. Validation rejects malformed colors, missing required backgrounds, undefined references, and variable cycles before evaluating contrast.

Normal text tokens must pass ≥ 4.5:1 against every surface they may occupy; tertiary tokens must pass ≥ 3:1. Status hues (success/error/warning) are reserved for status semantics — syntax strings/numbers use distinct colors, and ramp levels use a violet progression instead of alarm reds.

Search uses a dedicated violet highlight, distinct from the blue selection background, with text contrast ≥ 4.5:1. Optional search colors retain Pi's text and selectedBg fallbacks. Export metadata (dim) must pass ≥ 4.5:1 on explicit pageBg and cardBg backgrounds before browser opacity is applied. The light theme uses a darker metadata gray for better legibility.

Installation

From npm:

pi install npm:harpy-theme

Local development

From a local checkout, copy the current themes into Pi's user theme directory:

npm run copy:themes

This creates ~/.pi/agent/themes if needed and replaces only harpy-noct.json and harpy-insone.json. Other themes are left unchanged. Theme sources are resolved relative to the script, not the current working directory. Copying does not publish a package or modify Pi settings.

Usage

Select via /settings or directly in the TUI:

/theme harpy-noct    # Dark variant
/theme harpy-insone  # Light variant

Signature colors

The 4 exclusive colors that make harpy-theme recognizable:

Color Dark Light Usage
🔮 Harpy Violet #9B8BF4 #7B1FA2 Accent, headings, selections
🌸 Harpy Pink #FA569A #A91152 Keywords, labels
🦚 Harpy Teal #6ECBD5 #00626B Types, tools, borders, bullets
🌊 Harpy Blue #5FA0DE #0F57AC Functions, links

The dark variant keeps function blue (#5C9CE6) separate from signature link blue (#5FA0DE). Its success panels use #1A2B1E for a subtler green without lowering the existing surface-separation requirement.

The light variant uses copper (#9B4F3A) for numbers, while variables retain amber (#8E4D00), making the two roles distinguishable.

In harpy-noct, strings use warm ivory (#D8D0A8) instead of green to avoid green-on-green text in successful write/edit previews. This affects strings throughout syntax-highlighted code; success and error panels keep their green and red backgrounds.

Split-diff extensions can derive additional highlight backgrounds. Base theme contrast checks do not guarantee contrast in those regions.

Palettes

Variant Palette
harpy-noct palette dark
harpy-insone palette light

Surface colors

Background & surface colors (dark → light):

  Background  ████████  #121212  #F5F5F7
  Surface     ████████  #171B22  #FFFFFF
  SurfaceAlt  ████████  #232936  #E6EAF0
  Selection   ████████  #2B3445  #C9E2F6

Highlights

  • 🔤 Typography — normal text validated at ≥ 4.5:1; tertiary text at ≥ 3:1
  • 🌡️ Thinking ramp — cool blue → violet progression for thinking level indicators
  • 🌙→☀️ Day & night — dark and light variants sharing the same visual identity
  • 🦅 Brazilian identity — crafted as a pi theme, inspired by Amazon wildlife

License

MIT © bscordeiro