Perslis projects · Jira Monkey

Terminal preview · 0.1.0

Every ticket deserves
a second look.

Jira brings the request. Ollama helps read it. You choose the model that drafts the response. Ollama reviews it again, then the work returns to the queue or to a person who can judge it.

JIRA MONKEY● LOCAL REVIEW
$ jira-monkey

JIRA MONKEY  /  terminal preview

01  Read a captured Jira revision
02  Ollama clarifies the request
03  Your selected model drafts a response
04  Ollama reviews the result
05  Retry · Human review · Comment outbox

jira-monkey> demo

Illustrative terminal transcript. The bundled demo uses offline fixtures; it does not call a model or Jira.

Your modelClaude, OpenAI or DeepSeek API adapters; the chosen model stays attached to the job.
Two local reviewsOllama reads the request before drafting and examines the proposed response afterward.
A human by defaultA passed text proposal goes to human review. An optional policy sends it to the comment outbox.

Why we built it

The ticket is the beginning of the conversation.

A Jira ticket often mixes a desired outcome, a suspected cause and missing context. Sending all of that directly to a coding model can turn an assumption into an implementation plan before anyone has checked it. We wanted a visible loop that keeps the original request present from intake through the final review.

Jira Monkey began inside FortuneWheel, our native mission workbench. Its first job was to convert a captured ticket into a bounded investigation, with explicit source access and retained reports. The terminal companion makes ticket intake, model choice and review routing easier to try. Our longer-term goal is a verified change that can travel back to the ticket with evidence.

The intended loop, made visible

Read. Draft. Review. Decide.

  1. Jira ticketCapture the site, key, revision, title and description.
  2. Ollama triageClarify the goal, criteria and missing context.
  3. Your chosen modelClaude, OpenAI or DeepSeek drafts the proposed response.
  4. Ollama reviewCompare the response with the original ticket and criteria.
  5. The next decisionRetry, request a human, or prepare the Jira comment.

The preview runs one queued attempt at a time. A correctable omission can return to the queue with feedback, up to the original three-attempt limit. Missing evidence, execution work or exhausted retries go to a person. Human review is the default final step; the optional queue policy sends Ollama-passed proposals directly to the outbox.

What “done” means here: this preview produces proposed text resolutions. It does not edit a repository, run tests, create a PR or prove a bug was fixed. A model review is advisory. The complete code-fixing workflow still needs an implementation handoff and verified execution evidence.

Posting is a separate, explicit terminal command. It sends the retained proposal and review as a Jira comment, with the captured revision and an unverified-execution label. It does not close the issue or move its workflow status.

What we discovered

A tidy answer can still be the wrong answer.

Valid JSON is only the first check.

The earlier ten-case local compiler exercise produced semantically acceptable requirements in five cases. Structural validation helped keep the format predictable; it did not establish that the ticket had been understood correctly.

Reports do not establish a fix.

One historical native investigation completed all three stages with four retained Claude calls and thirteen observed actions. Its result remained executedUnverified. The source was unchanged and acceptance was still false.

Recovery is part of the product.

The September 13 audit found the installed native worker refusing admission because its store differed from its immutable origin. We retained that failure and its history. The terminal companion does not repair or bypass the original worker.

A lost acknowledgement is not a retry instruction.

A Jira comment can arrive even when its response is lost. The preview saves the exact outgoing body before posting and preserves uncertain delivery. It can reconcile an exact visible comment; it never silently resends one.

Build status · 13 September 2026

What you can test today.

CapabilityCurrent evidence and limit
Terminal and installationInstallable jira-monkey REPL and macOS Terminal launcher. Packaging and command tests pass. Source preview requires an existing Python installation.
Jira intake and commentsJira Cloud REST v3 adapters implemented and tested with fake transports. Live Jira authentication, ingestion and writeback remain untested.
Model selectionClaude Messages, OpenAI Responses and DeepSeek Chat Completions adapters implemented. Wire formats and incomplete-response handling are fixture-tested; live cloud calls remain untested.
Review and routing30 local tests pass across routing, persistence, delivery and packaging. Retry, human-review and comment-outbox paths are covered. See the separate local Ollama smoke report below.
Native source investigationEarlier report generation demonstrated; current installed worker is blocked by its recorded store-identity mismatch. Historical completion was unverified.
Verified code changesStill to build and qualify: implementation handoff, worktree allocation, target-specific tests, proof-bound PRs and live Jira/provider validation.

Read the validation record · Read the synthetic-ticket Ollama smoke result

Try the terminal companion

Install locally. Start with the offline demo.

Download and extract the source preview, then run these commands inside its folder:

python3 install.py
~/bin/jira-monkey demo
~/bin/jira-monkey

The installer adds ~/bin/jira-monkey and ~/Applications/Jira Monkey.app. Opening the app opens the REPL in Terminal. It does not download dependencies or models, start a background worker, or replace an existing installation. This is a local preview launcher, not a notarized public macOS release.

For a real ticket, configure your Jira Cloud site and email, an installed Ollama model, and the exact cloud provider/model you want. Supply API credentials through your normal secret manager and process environment. The selected cloud provider receives ticket content when you run a job. The preview reads title and description; comments, attachments and custom fields are outside this intake version.

jira-monkey setup --help
jira-monkey doctor
jira-monkey fetch PROJECT-123
jira-monkey run
jira-monkey status

Use show to inspect the retained evidence, draft to inspect the proposed comment, and approve, retry or reject for the human decision. publish JOB_ID --confirm PROJECT-123 authorizes the exact Jira comment. A changed ticket blocks posting; an uncertain delivery requires reconciliation.

Where this goes next

Bring the evidence back with the work.

The goal remains the complete loop: a Jira request becomes a scoped implementation, the selected model performs authorized work, Ollama reviews the outcome, and actual checks support the handoff. Work that fails those checks returns to the queue. Work that needs judgment reaches a human with the original request and the evidence together.

The next qualification needs a configured Jira test project, live provider access, recovery of the native worker, and a bounded code-change case with host-observed test results. Until then, the terminal preview is useful for exercising intake, proposed responses and review routing. It is not an autonomous bug-fixing release.

Interfaces behind the loop

These are protocol references, not evidence that this preview has passed a live service test.

More Perslis work: Windows 95 USB Lab and its full white paper.