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
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.
Orchestration and delegation
The main agent orchestrates and delegates bounded work to subagents. The policy is provider-agnostic.
Context and token economy
The orchestrator keeps the conversation and the decisions; cheaper models read and implement, and return only conclusions.
Project continuity
A local iteration history and an optional per-project memory let you resume work days later.
Worktrees per feature
Large changes are isolated in a worktree with its own branch. Several sessions work on one project without colliding.
Optional OpenSpec
The agent decides whether a change deserves a spec and proposes it. It creates no artifact without your explicit approval.
Design first
For non-trivial interface changes, it proposes closing the design first; that design becomes the reference for implementation and QA.
Autonomous close
/goal Close makes the agent work without asking until everything is validated, integrated and cleaned up. It still asks before destructive actions.
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
| Subagent | Model | Role |
|---|---|---|
| Explore | Haiku | Read-only search and reading across the repository |
| implementer | Sonnet | The only one allowed to write; one bounded task at a time |
| validator | Haiku | Runs the project’s validations and reports only failures and their cause |
| qa | Sonnet | End-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
Request
You say what you want and the orchestrator reads the project’s AGENTS.md.
Proposal
If the change is large, it proposes OpenSpec, a worktree or a design and waits for your approval.
Plan and exploration
Explore searches and reads the repository, read-only.
Implementation
implementer carries out one bounded task at a time.
Validation
validator runs the validations the project defines.
QA and review
With an interface, QA with Playwright after your OK. Then the orchestrator’s final review.
Publishing
Commit, push, Pull Request and merge, only after your confirmation.
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.
# 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