Open source harness · MIT License

One set of rules.
Several agents.
All your projects.

jdev-ai is a lightweight, stack-agnostic harness: shared rules and workflows for working with coding agents across several independent projects, without copying them into every repository or depending on one vendor’s CLI.

  • Claude Code
  • Codex
  • Copilot
  • OpenCode

// what it is

The same questions, answered once

When should the agent delegate? How do you resume a project after a week away? When does a change deserve a spec? How do parallel sessions avoid overwriting each other? The answers live in the harness, not copied into every repository.

The harness defines how agents work

Each repository in projects/ defines its own domain, code, dependencies and validations.

Not a monorepo or a workspace

Every project keeps its own .git and keeps working if the harness disappears.

No imposed stack or architecture

No package manager either. Each project’s AGENTS.md takes precedence over the global instructions.

// features

The whole cycle, with your approval at every step that matters

01

Multi-agent launcher

bin/agent opens a project with Claude Code, Codex, Copilot or OpenCode and tells you where you left off. It adds no configuration files to your projects.

02

Orchestration and delegation

The main agent orchestrates and delegates bounded work to subagents. The policy is provider-agnostic.

03

Context and token economy

The orchestrator keeps the conversation and the decisions; cheaper models read and implement, and return only conclusions.

04

Project continuity

A local iteration history and an optional per-project memory let you resume work days later.

05

Worktrees per feature

Large changes are isolated in a worktree with its own branch. Several sessions work on one project without colliding.

06

Optional OpenSpec

The agent decides whether a change deserves a spec and proposes it. It creates no artifact without your explicit approval.

07

Design first

For non-trivial interface changes, it proposes closing the design first; that design becomes the reference for implementation and QA.

08

Autonomous close

/goal Close makes the agent work without asking until everything is validated, integrated and cleaned up. It still asks before destructive actions.

09

Backlog, guides and images

Future work is recorded only after you confirm, didactic guides live in the project, and missing images are proposed before they are generated.

Each subagent, one bounded role

SubagentModelRole
ExploreHaikuRead-only search and reading across the repository
implementerSonnetThe only one allowed to write; one bounded task at a time
validatorHaikuRuns the project’s validations and reports only failures and their cause
qaSonnetEnd-to-end QA in the browser with Playwright, before a feature is closed

Roles defined for Claude Code. If a tool has no compatible subagents, the main agent plays the roles sequentially.

// graphical panel

All your sessions in a single window

bin/panel serves a local web panel that gathers the agent terminals of every project and tells you which one is waiting for you.

Home

What needs your attention: sessions waiting for you, finished conversations, each project’s pending items and your activity.

Terminals that survive

They live in a dedicated tmux server: close the browser and they are still there. In one, two or four columns.

Chat view

The same session as a conversation: your messages, replies in Markdown and grouped tool calls, with search.

Backlog

A board by state with each project’s backlog and a “Work on this” shortcut that opens a new session.

Changes

The diff of the main checkout and of each worktree, with a file tree and a side-by-side or unified view.

History

The iterations of every project by day, with their pending items and a “Resume from here” shortcut.

Local and private: served on 127.0.0.1 behind a token, and installable as an app (PWA).

// typical flow

From request to merge, without losing control

  1. Request

    You say what you want and the orchestrator reads the project’s AGENTS.md.

  2. Proposal

    If the change is large, it proposes OpenSpec, a worktree or a design and waits for your approval.

  3. Plan and exploration

    Explore searches and reads the repository, read-only.

  4. Implementation

    implementer carries out one bounded task at a time.

  5. Validation

    validator runs the validations the project defines.

  6. QA and review

    With an interface, QA with Playwright after your OK. Then the orchestrator’s final review.

  7. Publishing

    Commit, push, Pull Request and merge, only after your confirmation.

  8. History

    The iteration is recorded so you can resume it another day.

In amber, the steps that wait for your approval. Delegation is skipped for trivial tasks.

// get started

Clone, add a project and launch an agent

You need a POSIX shell, Git and the CLI of the agent you want to use. Add gh for the Pull Request flow of worktrees.

The rules are written in Spanish and agents reply in Spanish by default, unless the project says otherwise.

terminal
# 1. Clone the harness and add a project with its .git
$ git clone https://github.com/Jgonaz/jdev-ai.git
$ cd jdev-ai
$ git clone <your-repo-url> projects/my-project

# 2. Launch an agent (Claude Code by default)
$ bin/agent my-project
$ bin/agent my-project --codex
$ bin/agent my-project --wt login

# 3. Or open the graphical panel
$ bin/panel