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.
heya v0.0.6 · qwen2.5-coder:14b · local you › triage: variation coupons apply to the parent price at checkout, WP 6.5 / WC 8.7 · booting a clean WordPress 6.5 with WooCommerce 8.7 · added a variable product, a 10% coupon, ran checkout ok reproduced. the coupon discounts the parent price, not the variation root cause get_price() returns the parent in the cart-total filter fix hook woocommerce_get_cart_item_from_session and use the variation id
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
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/heyaonce if it asks):brew tap shameemreza/heya https://github.com/shameemreza/heya brew install heya
-
2
Set up a model. The wizard walks you through local or cloud.
heya init
-
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.