Skip to main content

A turn-based roguelike you play while your AI coding agent works.

Project description

jun

Raise a daemon that hunts while your AI coding agent works.

jun runs in a terminal pane next to Claude Code. You hatch a daemon — a creature that lives in your repo. When your agent works, your daemon hunts: every tool call the agent makes flies in as a token, and you catch it in rhythm. Catches chain into a combo; the daemon feeds on the essence and grows.

Its form is generative — shaped by how you actually code. Lots of edits → more limbs. Lots of test runs → armor. Lots of reading → more eyes. No two daemons are alike, and yours is the thing you screenshot and share.

While you're away, other developers' daemons wander through your den and leave gifts, and a daily expedition ranks the whole community. You're never alone in the terminal.

Quick start

uvx jun                 # play (zero install)
uv tool install jun     # or install it permanently
jun            # play
jun init       # install Claude Code hooks (so the agent drives your hunts)
jun wrapped    # print the shareable daemon card
jun new        # release your daemon and start fresh

Run jun init once — that's what connects jun to your agent. After that, a hunt starts on its own the moment your agent picks up a task, and your daemon only grows from that real work.

Controls

key action
space catch a token · start a training run
1 2 choose a form at an evolution fork
esc end the hunt · leave a screen
? help — the loop and the controls
q quit (always saved)

A live hunt starts by itself when your agent works — that is the game, and it is what grows your daemon. With no agent running, space starts a training run against a simulated one: good for learning the catch, but it banks nothing. The daemon is a record of your real coding.

How it connects to Claude Code

jun is a standalone program — it never launches or wraps Claude Code. Run it in a separate pane. jun init adds two hooks to ~/.claude/settings.json: PostToolUse (each tool call → a catch) and Stop (ends the hunt).

Status

Working: the agent connection (Claude Code hooks → live hunts that start on their own and grow the daemon), the daemon (generative ASCII), the hunt with focus (a hunt can collapse — every catch matters), combo surges, evolutions (three permanent forks → eight daemons), daily objectives, training mode, the shared world (visitors, gifts, daily expedition), the jun wrapped card, crash-safe atomic saves, first-run intro and ? help.

Simulated for now: the shared world is generated on-device — genuinely multiplayer needs a small registry server (the one swap left to make).

Development

uv sync
uv run jun

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

jun-0.1.0.tar.gz (22.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

jun-0.1.0-py3-none-any.whl (23.4 kB view details)

Uploaded Python 3

File details

Details for the file jun-0.1.0.tar.gz.

File metadata

  • Download URL: jun-0.1.0.tar.gz
  • Upload date:
  • Size: 22.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for jun-0.1.0.tar.gz
Algorithm Hash digest
SHA256 c20a76c48094d12592d9c9ed6e56c83ca2cceb269db2d8797b67e1ee7b41568f
MD5 5ef1db6c77551de198de67b6431d371c
BLAKE2b-256 fa8815f45ae189ead2ea31daedfead638a2ea6962903cb5992b143b4d8c7843c

See more details on using hashes here.

Provenance

The following attestation bundles were made for jun-0.1.0.tar.gz:

Publisher: publish.yml on gauthierpiarrette/jun

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file jun-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: jun-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 23.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for jun-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b2122151895b299659435e4e9acfcadb38788d76cc43f1a72246494948058229
MD5 cdc647259749c90943ddebbeb18d2688
BLAKE2b-256 43bd583455236fdd1702aa737521006468a2c787c1ebb8ca8cdec20aed58b593

See more details on using hashes here.

Provenance

The following attestation bundles were made for jun-0.1.0-py3-none-any.whl:

Publisher: publish.yml on gauthierpiarrette/jun

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page