heya

An AI agent that runs on your machine.

Heya works in your terminal with any model, local or cloud. It reads your code, reproduces bugs, and writes the fix, without sending your project anywhere you didn't choose.

$ pipx install heya-agent

local-first. model-agnostic. yours.

I built Heya for the parts of my job that eat time but don't need my judgment. Reproducing a WooCommerce bug on a clean install, reading a plugin to find the one line that matters, checking a fix before I trust it. It does the legwork in your terminal, with whatever model you point it at, and keeps your code on your machine. I still make the call on what ships.

See it work

you › why does the cart total ignore my variation coupon on WC 8.7?
· read_log: tailing wp-content/debug.log
· search_files: woocommerce_get_cart_item_from_session
found the coupon resolves against the parent product, not the variation
where class-wc-cart.php pulls get_price() before the variation is set
fix a 6-line snippet on the cart-item filter, verified on a clean install
you › is the acme-bookings plugin safe to run?
· list_files: mapping the project
· acme-bookings/acme-bookings.php is the main file
· review: security, standards, correctness, over-building
issue an unsanitized $_GET['date'] reaches a SQL query in class-calendar.php:88
fix sanitize with absint() and run it through $wpdb->prepare()
you › scaffold a WooCommerce extension: a gift-note field at checkout
· writing gift-note.php with the plugin header
· hooking woocommerce_after_order_notes and the order save
· review: security, standards
caught the field needs sanitize_text_field() and a nonce, the label needs __()
fixed added the guards, escaped on output, made the string translatable
you › give me a first pass: coupons stopped working after the 8.7 update
· checking the WooCommerce 8.7 changelog
· pulling the repro I just ran
a starting point, in my voice. I take it from here:

Hi there, thanks for the detail. This lines up with a change in 8.7 in how
coupons apply to variations. Can you confirm the coupon targets the specific
variation, not the parent product?

What you get

Runs on your machine

Point Heya at a local model and nothing leaves your laptop. No account, no telemetry, no project upload. Your code is yours.

# config.toml
[profiles.local]
base_url = "http://localhost:11434/v1"
model = "qwen2.5-coder:14b"

Any model, swapped mid-task

Heya speaks the OpenAI chat API, so any provider works. A local model through Ollama, or Claude, GPT, Gemini, Kimi, GLM, and DeepSeek through OpenRouter. Switch between them mid-conversation.

you › /model cloud-openrouter
switched to cloud-openrouter (claude)

Works from what you have

Drop in a screenshot of the error, a debug log, or any file. With a vision model, Heya reads the screenshot itself, so you skip retyping a stack trace or describing what you see.

you › what is failing here? @checkout-error.png @debug.log
· reading checkout-error.png (image)
· reading debug.log
found a fatal in class-wc-checkout.php:412

Reproduce, diagnose, fix

Heya boots a clean WordPress, reproduces the bug, finds the root cause, and verifies the fix against a real run before it says the word "done".

· wp_playground: clean WP 6.5 / WC 8.7
verified repro passes, regression passes

Acts on your WooCommerce store

Connect a development or staging store and Heya reads and updates it through WordPress and WooCommerce's official Abilities API: query orders, change status, manage products. Always under the store's own permissions, and your approval.

you › find pending orders over 200 and flag them
· wp_run_ability woocommerce/orders-query
3 orders 1841, 1855, 1860

Runs work in the background

Hand off a long job and keep going. Launch agents that build, research, or audit while you work. Each one leases the folder it builds in, so several run side by side without colliding.

you › build the gift-card plugin in the background while I review this PR
· started background agent a1
a1 done built acme-gift-cards, 9 files

Brings your own tools

Drop your Claude skills, plugins, and MCP servers in. Heya reads them and uses them, no rewrite. Your setup, in a new agent.

you › /skills
writing-voice, support-reply, wp-security ...

Reviews its own work

Before a change is called done, it runs through a panel: correctness, security, WordPress standards, and over-building. The weak findings get thrown out.

you › review_changes
nothing blocks 1 minor, 0 security

Quickstart

  1. 1

    Install it. The package is heya-agent, the command is heya.

    pipx install heya-agent

    Or with Homebrew on macOS or Linux (newer Homebrew: run brew trust shameemreza/heya once if it asks):

    brew tap shameemreza/heya https://github.com/shameemreza/heya
    brew install heya
  2. 2

    Set up a model. The wizard walks you through local or cloud.

    heya init
  3. 3

    Ask it something real.

    heya "triage this: checkout 500s on WP 6.5 / WC 8.7"

Needs Python 3.11 or newer. A local model needs Ollama; a cloud model needs a key.

Already installed? Update any time with heya update.

Read the docs