io.github.philo-kim/openharness
Lets AI coding agents discover and reference each other's recent sessions.
Open source Open in the app JSON README (API)
About
Lets AI coding agents discover and reference each other's recent sessions.
Details
- Kind
- MCP servers
- Topic
- No topic detected
- Publisher
- philo-kim
- Origin
- official
- Category
- ferramentas
- Transport
- local
- Version
- 0.1.1
- Last push
- 2026-03-17T05:37:57Z
- Repository state
- ativo
- Language
- TypeScript
- Added
- 2026-08-29 04:01:00
- Updated
- 2026-08-29 04:01:00
- Origin id
io.github.philo-kim/openharness
README
# OpenHarness
AI 코딩 에이전트의 최근 세션 파일을 찾아 서로 참조하게 해주는 로컬 MCP 서버.
전용 하네스 없이 하네스처럼 동작한다. 기존 도구 환경을 그대로 유지하면서, 에이전트 간 세션을 연결하는 디스커버리 레이어.
## Supported Agents (MVP)
| Agent | Session Path | Format |
|-------|-------------|--------|
| Claude Code | `~/.claude/projects/` | JSONL |
| Codex CLI | `~/.codex/sessions/` | JSONL |
| Gemini CLI | `~/.gemini/tmp/<hash>/chats/` | JSON |
## Prerequisites
- Each agent must be able to **read local files directly**.
- OpenHarness only provides paths and metadata — it does not transform, relay, or store session content.
## Install
```bash
npm install -g @freebird-ai/openharness
openharness init
```
This registers OpenHarness as an MCP server in each agent's config.
## MCP Tools
### `get_agent_sessions`
Returns recent session paths for all agents, filtered by project.
**Input:**
```json
{ "project": "/Users/me/my-app" }
```
**Output:**
```json
[
{
"agent": "claude-code",
"path": "/Users/me/.claude/projects/-Users-me-my-app/session.jsonl",
"format": "jsonl",
"updatedAt": "2026-03-17T14:32:00Z",
"matchedProject": "/Users/me/my-app",
"matchedBy": "directory-name"
}
]
```
### `get_agent_session`
Returns the recent session path for a specific agent.
**Input:**
```json
{ "agent": "claude-code", "project": "/Users/me/my-app" }
```
**Output:**
```json
{
"agent": "claude-code",
"path": "/Users/me/.claude/projects/-Users-me-my-app/session.jsonl",
"format": "jsonl",
"updatedAt": "2026-03-17T14:32:00Z",
"matchedProject": "/Users/me/my-app",
"matchedBy": "directory-name"
}
```
Returns `null` if no session is found.
## Project Matching
| Agent | Strategy |
|-------|----------|
| Claude Code | Project path escaped with `-` as directory name |
| Codex CLI | Workspace field inside session JSONL |
| Gemini CLI | Project path hash matching `tmp/<hash>/` |
## How It Works
```
User → Codex: "Review what Claude Code worked on recently"
Codex → OpenHarness MCP: get_agent_session({ agent: "claude-code", project: "..." })
Codex ← receives session path + metadata
Codex → reads the JSONL file directly and performs review
```
No rules needed in agent instruction files. MCP tool descriptions are enough for agents to use naturally.
## Manual MCP Configuration
If you prefer to configure manually instead of using `init`:
```json
{
"mcpServers": {
"openharness": {
"command": "openharness",
"args": []
}
}
}
```
Add this to your agent's MCP config file:
| Agent | Config File |
|-------|------------|
| Claude Code | `~/.claude/mcp.json` or project `.mcp.json` |
| Codex CLI | project `.codex/` |
| Gemini CLI | `~/.gemini/settings.json` |
## License
MIT