Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions .claude/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{
"permissions": {
"allow": [
"Bash(tasklist *)",
"Bash(cargo check *)",
"Bash(cargo build *)",
"Bash(cargo fmt --all -- --check)",
"Bash(./gradlew compileJava *)",
"Bash(npx tsc *)",
"Bash(npm run typecheck)",
"Bash(where *)"
]
}
}
8 changes: 4 additions & 4 deletions .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
name: Bug report
description: Report a reproducible problem in OpenIntercept
description: Report a reproducible problem in ProcTap
title: "[Bug] "
labels:
- bug
Expand Down Expand Up @@ -37,7 +37,7 @@ body:
id: environment
attributes:
label: Environment
description: OS, OpenIntercept version or commit, Rust/Node/JDK version if relevant
description: OS, ProcTap version or commit, Rust/Node/JDK version if relevant
placeholder: Windows 11, main@abc123, Temurin 21...
validations:
required: true
Expand All @@ -46,7 +46,7 @@ body:
attributes:
label: Steps to reproduce
placeholder: |
1. Start OpenIntercept with...
1. Start ProcTap with...
2. Configure target app with...
3. Trigger request to...
4. Observe...
Expand All @@ -68,7 +68,7 @@ body:
id: proxy-config
attributes:
label: Proxy and trust configuration
description: Explain how the target app was configured to use the proxy and trust the OpenIntercept CA
description: Explain how the target app was configured to use the proxy and trust the ProcTap CA
validations:
required: false
- type: textarea
Expand Down
47 changes: 11 additions & 36 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -47,12 +47,6 @@ jobs:
- name: Cache Rust builds
uses: Swatinem/rust-cache@v2

- name: Setup Java
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: 21

- name: Install npm dependencies
run: npm ci

Expand Down Expand Up @@ -80,12 +74,12 @@ jobs:
include:
- name: windows-x64
runner: windows-latest
binary: target/release/openintercept-desktop.exe
artifact: openintercept-windows-x64
binary: target/release/proctap-desktop.exe
artifact: proctap-windows-x64
- name: ubuntu-x64
runner: ubuntu-22.04
binary: target/release/openintercept-desktop
artifact: openintercept-ubuntu-x64
binary: target/release/proctap-desktop
artifact: proctap-ubuntu-x64

steps:
- name: Checkout
Expand Down Expand Up @@ -118,12 +112,6 @@ jobs:
- name: Cache Rust builds
uses: Swatinem/rust-cache@v2

- name: Setup Java
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: 21

- name: Install npm dependencies
run: npm ci

Expand All @@ -135,10 +123,7 @@ jobs:
with:
name: ${{ matrix.artifact }}
if-no-files-found: error
path: |
${{ matrix.binary }}
java/build/openintercept-agent.jar
java/build/openintercept-attach-helper.jar
path: ${{ matrix.binary }}

release-plan:
name: Release plan
Expand Down Expand Up @@ -188,13 +173,13 @@ jobs:
include:
- name: windows-x64
runner: windows-latest
binary: target/release/openintercept-desktop.exe
archive: openintercept-v${{ needs.release-plan.outputs.version }}-windows-x64.zip
binary: target/release/proctap-desktop.exe
archive: proctap-v${{ needs.release-plan.outputs.version }}-windows-x64.zip
artifact: release-asset-windows-x64
- name: ubuntu-x64
runner: ubuntu-22.04
binary: target/release/openintercept-desktop
archive: openintercept-v${{ needs.release-plan.outputs.version }}-ubuntu-x64.tar.gz
binary: target/release/proctap-desktop
archive: proctap-v${{ needs.release-plan.outputs.version }}-ubuntu-x64.tar.gz
artifact: release-asset-ubuntu-x64

steps:
Expand Down Expand Up @@ -228,12 +213,6 @@ jobs:
- name: Cache Rust builds
uses: Swatinem/rust-cache@v2

- name: Setup Java
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: 21

- name: Install npm dependencies
run: npm ci

Expand All @@ -248,18 +227,14 @@ jobs:
shell: pwsh
run: |
New-Item -ItemType Directory -Path "release-dist"
Copy-Item -LiteralPath "${{ matrix.binary }}" -Destination "release-dist/OpenIntercept.exe"
Copy-Item -LiteralPath "java/build/openintercept-agent.jar" -Destination "release-dist/openintercept-agent.jar"
Copy-Item -LiteralPath "java/build/openintercept-attach-helper.jar" -Destination "release-dist/openintercept-attach-helper.jar"
Copy-Item -LiteralPath "${{ matrix.binary }}" -Destination "release-dist/ProcTap.exe"
Compress-Archive -Path "release-dist/*" -DestinationPath "${{ matrix.archive }}"

- name: Package Ubuntu asset
if: runner.os == 'Linux'
run: |
mkdir release-dist
cp "${{ matrix.binary }}" "release-dist/openintercept-desktop"
cp java/build/openintercept-agent.jar release-dist/openintercept-agent.jar
cp java/build/openintercept-attach-helper.jar release-dist/openintercept-attach-helper.jar
cp "${{ matrix.binary }}" "release-dist/proctap-desktop"
tar -czf "${{ matrix.archive }}" -C release-dist .

- name: Upload release asset artifact
Expand Down
9 changes: 5 additions & 4 deletions AGENTS.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
# OpenIntercept Conventions
# ProcTap Conventions

- Keep the MVP focused on a read-only local HTTP/HTTPS proxy with the most automatic HTTPS certificate setup possible.
- Treat JVM traffic inspection as an important follow-up workflow built on top of the proxy, not as the primary product identity.
- Keep the MVP focused on read-only, per-process HTTP/HTTPS capture built on top of mitmproxy (`mitmdump --mode local:<process>` run as an external engine subprocess in `crates/mitm_engine`), with the most automatic HTTPS trust setup possible.
- ProcTap does not implement its own MITM proxy engine. Do not reintroduce one; extend `crates/mitm_engine` and `bridge_addon.py` instead.
- Treat JVM trust automation as an important follow-up workflow built on top of capture, not as the primary product identity.
- Prefer small, isolated Rust crates with explicit boundaries.
- Do not add traffic modification, replay, mocking, or mobile support until the MVP is stable.
- Do not add replay, general-purpose mocking, or mobile support until the MVP is stable. The one exception: scoped, rule-based fault injection (delay, forced status/body, abort, throttle) on request/response, applied via `bridge_addon.py` and exposed through both Tauri commands and a desktop UI panel, per `README.md` roadmap P8.
- Keep the desktop app local-first: no cloud service, account, or telemetry.
- Use ASCII for code and documentation unless a file already uses non-ASCII.
- Treat `README.md` as the project source of truth for implemented features, current work, roadmap, and known limitations.
Expand Down
1 change: 1 addition & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
@AGENTS.md
27 changes: 8 additions & 19 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
# Contributing to OpenIntercept
# Contributing to ProcTap

Thanks for contributing.

This project aims to be a focused, professional open-source desktop proxy for local HTTP and HTTPS inspection. The current priority is a solid read-only MVP, not a broad traffic manipulation platform.
This project aims to be a focused, professional open-source desktop tool that makes mitmproxy's per-process capture mode easy to use for local HTTP and HTTPS inspection. The current priority is a solid read-only MVP, not a broad traffic manipulation platform.

## Product Scope

Please align contributions with the current project direction:

- keep the MVP focused on a read-only local HTTP/HTTPS proxy;
- keep the MVP focused on read-only, per-process HTTP/HTTPS capture built on top of mitmproxy;
- prefer improvements to reliability, clarity, and local developer experience;
- treat JVM interception as an important follow-up workflow, not the core product identity;
- treat JVM trust automation as an important follow-up workflow, not the core product identity;
- do not introduce rewrite, replay, mocking, mutation, or unrelated protocol integrations unless explicitly discussed first.

The source of truth for current product state is `README.md`.
Expand All @@ -28,7 +28,8 @@ Install:
- Rust
- Node.js
- Tauri prerequisites for your platform
- a JDK if you work on the Java helper flow
- mitmproxy (provides the `mitmdump` binary the desktop app spawns)
- a JDK if you work on the JVM trust automation flow

From the repository root:

Expand Down Expand Up @@ -59,18 +60,6 @@ npm run typecheck
npm run build
```

If you change the Java helper workflow, also rebuild the Java artifacts:

```powershell
./scripts/build-java.ps1
```

or:

```bash
./scripts/build-java.sh
```

## Pull Request Expectations

Keep pull requests focused and easy to review.
Expand Down Expand Up @@ -104,7 +93,7 @@ Open an issue first when:
Bug reports are most useful when they include:

- platform and OS version;
- how OpenIntercept was started;
- how the target application was configured to use the proxy;
- how ProcTap was started, and whether mitmproxy was installed and on `PATH`;
- which process was targeted for capture;
- whether the issue is HTTP-only, HTTPS trust-related, or JVM-specific;
- reproduction steps, logs, and screenshots when available.
Loading
Loading