copper-pilot-cli 0.1.5__tar.gz → 0.1.7__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- copper_pilot_cli-0.1.7/.claude-plugin/marketplace.json +17 -0
- {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/.gitignore +2 -0
- {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/CONTRIBUTING.md +8 -3
- copper_pilot_cli-0.1.7/HISTORY.md +95 -0
- {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/PKG-INFO +32 -7
- {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/README.md +28 -5
- copper_pilot_cli-0.1.7/VERSION +1 -0
- {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/docs/cli.md +26 -1
- {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/docs/development.md +10 -1
- copper_pilot_cli-0.1.7/docs/harness.md +108 -0
- copper_pilot_cli-0.1.7/examples/.gitignore +14 -0
- {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/examples/001_esp32/.copperpilot/TOOLS.md +1 -1
- {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/examples/001_esp32/README.md +1 -1
- copper_pilot_cli-0.1.7/examples/002_cm5_camera/.copperpilot/PLANS.md +5 -0
- copper_pilot_cli-0.1.7/examples/002_cm5_camera/.copperpilot/README.md +33 -0
- copper_pilot_cli-0.1.7/examples/002_cm5_camera/.copperpilot/plans/cm5-camera-carrier.plan.md +457 -0
- copper_pilot_cli-0.1.7/examples/002_cm5_camera/.gitignore +16 -0
- copper_pilot_cli-0.1.7/examples/002_cm5_camera/README.md +195 -0
- copper_pilot_cli-0.1.7/examples/002_cm5_camera/assembly_spec.json +2984 -0
- copper_pilot_cli-0.1.7/examples/002_cm5_camera/cm5_camera/3dmodels/CM4.step +3981 -0
- copper_pilot_cli-0.1.7/examples/002_cm5_camera/cm5_camera/3dmodels/CM5.step +3981 -0
- copper_pilot_cli-0.1.7/examples/002_cm5_camera/cm5_camera/3dmodels/Camera_IMX219-D160.step +3827 -0
- copper_pilot_cli-0.1.7/examples/002_cm5_camera/cm5_camera/3dmodels/USB_A_Molex_105057-0001_Vertical.wrl +15 -0
- copper_pilot_cli-0.1.7/examples/002_cm5_camera/cm5_camera/3dmodels/USB_A_vertical.step +1521 -0
- copper_pilot_cli-0.1.7/examples/002_cm5_camera/cm5_camera/CM5.3dshapes/5033981892.stp +49696 -0
- copper_pilot_cli-0.1.7/examples/002_cm5_camera/cm5_camera/CM5.3dshapes/DF40C-100DS.stp +96700 -0
- copper_pilot_cli-0.1.7/examples/002_cm5_camera/cm5_camera/CM5.3dshapes/JTHDA-19F08.STEP +76711 -0
- copper_pilot_cli-0.1.7/examples/002_cm5_camera/cm5_camera/CM5.3dshapes/SRP5030CC.stp +2943 -0
- copper_pilot_cli-0.1.7/examples/002_cm5_camera/cm5_camera/cm5_camera.kicad_dru +4 -0
- copper_pilot_cli-0.1.7/examples/002_cm5_camera/cm5_camera/cm5_camera.kicad_pcb +49990 -0
- copper_pilot_cli-0.1.7/examples/002_cm5_camera/cm5_camera/cm5_camera.kicad_pro +600 -0
- copper_pilot_cli-0.1.7/examples/002_cm5_camera/cm5_camera/cm5_camera.kicad_sch +23368 -0
- copper_pilot_cli-0.1.7/examples/002_cm5_camera/cm5_camera/cm5_camera.kicad_sym +15922 -0
- copper_pilot_cli-0.1.7/examples/002_cm5_camera/cm5_camera/cm5_camera.png +0 -0
- copper_pilot_cli-0.1.7/examples/002_cm5_camera/cm5_camera/cm5_camera.pretty/C_0402_1005Metric.kicad_mod +379 -0
- copper_pilot_cli-0.1.7/examples/002_cm5_camera/cm5_camera/cm5_camera.pretty/C_0805_2012Metric.kicad_mod +379 -0
- copper_pilot_cli-0.1.7/examples/002_cm5_camera/cm5_camera/cm5_camera.pretty/Camera_Module_IMX219-D160.kicad_mod +388 -0
- copper_pilot_cli-0.1.7/examples/002_cm5_camera/cm5_camera/cm5_camera.pretty/Crystal_SMD_3225-4Pin_3.2x2.5mm.kicad_mod +373 -0
- copper_pilot_cli-0.1.7/examples/002_cm5_camera/cm5_camera/cm5_camera.pretty/HDMI_Mini-C_Molex_47151-0001.kicad_mod +415 -0
- copper_pilot_cli-0.1.7/examples/002_cm5_camera/cm5_camera/cm5_camera.pretty/LED_0603_1608Metric.kicad_mod +373 -0
- copper_pilot_cli-0.1.7/examples/002_cm5_camera/cm5_camera/cm5_camera.pretty/L_Bourns_SRP5030CC.kicad_mod +503 -0
- copper_pilot_cli-0.1.7/examples/002_cm5_camera/cm5_camera/cm5_camera.pretty/L_CommonModeChoke_Coilank_ACM1210.kicad_mod +143 -0
- copper_pilot_cli-0.1.7/examples/002_cm5_camera/cm5_camera/cm5_camera.pretty/MOLEX_USB_67298-4090.kicad_mod +310 -0
- copper_pilot_cli-0.1.7/examples/002_cm5_camera/cm5_camera/cm5_camera.pretty/Molex_200528-0150_1x15-1MP_P1.00mm_Horizontal.kicad_mod +428 -0
- copper_pilot_cli-0.1.7/examples/002_cm5_camera/cm5_camera/cm5_camera.pretty/PinHeader_1x03_P2.54mm_Vertical.kicad_mod +317 -0
- copper_pilot_cli-0.1.7/examples/002_cm5_camera/cm5_camera/cm5_camera.pretty/PinHeader_2x20_P2.54mm_Vertical.kicad_mod +470 -0
- copper_pilot_cli-0.1.7/examples/002_cm5_camera/cm5_camera/cm5_camera.pretty/R_0402_1005Metric.kicad_mod +379 -0
- copper_pilot_cli-0.1.7/examples/002_cm5_camera/cm5_camera/cm5_camera.pretty/R_0603_1608Metric.kicad_mod +260 -0
- copper_pilot_cli-0.1.7/examples/002_cm5_camera/cm5_camera/cm5_camera.pretty/Raspberry-Pi-4-Compute-Module.kicad_mod +1646 -0
- copper_pilot_cli-0.1.7/examples/002_cm5_camera/cm5_camera/cm5_camera.pretty/SDCARD_MOLEX_503398-1892.kicad_mod +489 -0
- copper_pilot_cli-0.1.7/examples/002_cm5_camera/cm5_camera/cm5_camera.pretty/SOT-23-5.kicad_mod +442 -0
- copper_pilot_cli-0.1.7/examples/002_cm5_camera/cm5_camera/cm5_camera.pretty/SW_SPST_PTS645Sx43SMTR92.kicad_mod +281 -0
- copper_pilot_cli-0.1.7/examples/002_cm5_camera/cm5_camera/cm5_camera.pretty/TSOT-23-6.kicad_mod +289 -0
- copper_pilot_cli-0.1.7/examples/002_cm5_camera/cm5_camera/cm5_camera.pretty/Texas_DRT-3.kicad_mod +310 -0
- copper_pilot_cli-0.1.7/examples/002_cm5_camera/cm5_camera/cm5_camera.pretty/UQFN-10_1.4x1.8mm_P0.4mm.kicad_mod +403 -0
- copper_pilot_cli-0.1.7/examples/002_cm5_camera/cm5_camera/cm5_camera.pretty/USB_C_Receptacle_GCT_USB4105-xx-A_16P_TopMnt_Horizontal.kicad_mod +338 -0
- copper_pilot_cli-0.1.7/examples/002_cm5_camera/cm5_camera/cm5_camera_bottom.png +0 -0
- copper_pilot_cli-0.1.7/examples/002_cm5_camera/cm5_camera/fp-lib-table +4 -0
- copper_pilot_cli-0.1.7/examples/002_cm5_camera/cm5_camera/sym-lib-table +4 -0
- copper_pilot_cli-0.1.7/examples/002_cm5_camera/generate_3d_models.py +116 -0
- copper_pilot_cli-0.1.7/examples/002_cm5_camera/helper.py +2174 -0
- copper_pilot_cli-0.1.7/examples/002_cm5_camera/main.py +250 -0
- copper_pilot_cli-0.1.7/plugins/copper-pilot/.claude-plugin/plugin.json +12 -0
- copper_pilot_cli-0.1.7/plugins/copper-pilot/.mcp.json +8 -0
- copper_pilot_cli-0.1.7/plugins/copper-pilot/agents/copper-pilot.md +17 -0
- copper_pilot_cli-0.1.7/plugins/copper-pilot/skills/copper-pilot-review/SKILL.md +26 -0
- {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/pyproject.toml +8 -2
- copper_pilot_cli-0.1.7/skills/copper-pilot-review/SKILL.md +51 -0
- {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/src/copper_pilot_cli/copper_main.py +19 -7
- copper_pilot_cli-0.1.7/src/copper_pilot_cli/copper_mcp.py +432 -0
- copper_pilot_cli-0.1.7/tests/test_cm5_camera_example.py +688 -0
- {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/tests/test_main.py +13 -0
- copper_pilot_cli-0.1.7/tests/test_mcp.py +268 -0
- copper_pilot_cli-0.1.7/tests/test_plugin_manifest.py +69 -0
- {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/tests/test_release_gates.py +35 -2
- copper_pilot_cli-0.1.5/HISTORY.md +0 -48
- copper_pilot_cli-0.1.5/VERSION +0 -1
- {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/CODE_OF_CONDUCT.md +0 -0
- {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/LICENSE +0 -0
- {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/NOTICE +0 -0
- {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/SECURITY.md +0 -0
- {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/SUPPORT.md +0 -0
- {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/UPSTREAM.md +0 -0
- {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/docs/assets/esp32-mini-1-h4.gif +0 -0
- {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/docs/assets/logo-dark.png +0 -0
- {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/docs/assets/logo-light.png +0 -0
- {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/docs/assets/logo.png +0 -0
- {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/examples/001_esp32/.copperpilot/PLANS.md +0 -0
- {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/examples/001_esp32/.copperpilot/README.md +0 -0
- {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/examples/001_esp32/.copperpilot/plans/esp32-dev-board.plan.md +0 -0
- {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/examples/001_esp32/.gitignore +0 -0
- {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/examples/001_esp32/esp32/3d-models/SW-SMD_L3.9-W2.9-H2.0-LS4.8.step +0 -0
- {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/examples/001_esp32/esp32/3d-models/TYPE-C-31-M-12.step +0 -0
- {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/examples/001_esp32/esp32/esp32.kicad_pcb +0 -0
- {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/examples/001_esp32/esp32/esp32.kicad_pro +0 -0
- {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/examples/001_esp32/esp32/esp32.kicad_sch +0 -0
- {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/examples/001_esp32/esp32/esp32.png +0 -0
- {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/examples/001_esp32/helper.py +0 -0
- {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/examples/001_esp32/main.py +0 -0
- {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/src/copper_pilot_cli/__init__.py +0 -0
- {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/src/copper_pilot_cli/__main__.py +0 -0
- {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/src/copper_pilot_cli/_upstream/__init__.py +0 -0
- {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/src/copper_pilot_cli/_upstream/dcode_0_1_69/PROVENANCE.json +0 -0
- {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/src/copper_pilot_cli/_upstream/dcode_0_1_69/__init__.py +0 -0
- {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/src/copper_pilot_cli/_upstream/dcode_0_1_69/diff_utils.py +0 -0
- {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/src/copper_pilot_cli/_version.py +0 -0
- {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/src/copper_pilot_cli/clipboard.py +0 -0
- {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/src/copper_pilot_cli/copper_api.py +0 -0
- {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/src/copper_pilot_cli/copper_app.py +0 -0
- {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/src/copper_pilot_cli/copper_auth.py +0 -0
- {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/src/copper_pilot_cli/copper_config.py +0 -0
- {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/src/copper_pilot_cli/copper_features.py +0 -0
- {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/src/copper_pilot_cli/copper_graph.py +0 -0
- {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/src/copper_pilot_cli/copper_hooks.py +0 -0
- {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/src/copper_pilot_cli/copper_preferences.py +0 -0
- {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/src/copper_pilot_cli/copper_presentation.py +0 -0
- {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/src/copper_pilot_cli/copper_protocol.py +0 -0
- {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/src/copper_pilot_cli/copper_theme.py +0 -0
- {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/src/copper_pilot_cli/copper_tools.py +0 -0
- {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/src/copper_pilot_cli/copper_update.py +0 -0
- {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/src/copper_pilot_cli/copper_widgets.py +0 -0
- {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/src/copper_pilot_cli/copper_workspace.py +0 -0
- {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/src/copper_pilot_cli/deepagents_tools.py +0 -0
- {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/src/copper_pilot_cli/diagnostics.py +0 -0
- {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/src/copper_pilot_cli/langchain.py +0 -0
- {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/src/copper_pilot_cli/media_utils.py +0 -0
- {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/src/copper_pilot_cli/py.typed +0 -0
- {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/src/copper_pilot_cli/sessions.py +0 -0
- {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/src/copper_pilot_cli/textual_patches.py +0 -0
- {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/tests/test_auth.py +0 -0
- {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/tests/test_clipboard.py +0 -0
- {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/tests/test_e2e.py +0 -0
- {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/tests/test_esp32_example.py +0 -0
- {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/tests/test_features.py +0 -0
- {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/tests/test_langchain.py +0 -0
- {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/tests/test_live_chat_e2e.py +0 -0
- {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/tests/test_preferences.py +0 -0
- {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/tests/test_presentation.py +0 -0
- {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/tests/test_protocol.py +0 -0
- {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/tests/test_sessions.py +0 -0
- {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/tests/test_tools.py +0 -0
- {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/tests/test_tui.py +0 -0
- {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/tests/test_upstream_provenance.py +0 -0
- {copper_pilot_cli-0.1.5 → copper_pilot_cli-0.1.7}/tests/test_workspace.py +0 -0
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "copper-pilot-cli",
|
|
3
|
+
"owner": {
|
|
4
|
+
"name": "CopperPilot"
|
|
5
|
+
},
|
|
6
|
+
"metadata": {
|
|
7
|
+
"description": "CopperPilot Claude Code plugin: delegate electronics design to the hosted agent.",
|
|
8
|
+
"version": "0.1.5"
|
|
9
|
+
},
|
|
10
|
+
"plugins": [
|
|
11
|
+
{
|
|
12
|
+
"name": "copper-pilot",
|
|
13
|
+
"source": "./plugins/copper-pilot",
|
|
14
|
+
"description": "MCP conductor plus @copper-pilot and /copper-pilot-review."
|
|
15
|
+
}
|
|
16
|
+
]
|
|
17
|
+
}
|
|
@@ -8,7 +8,7 @@ CopperPilot agent. It is not the desktop app or the hosted backend.
|
|
|
8
8
|
|
|
9
9
|
## Prerequisites
|
|
10
10
|
|
|
11
|
-
- Python 3.
|
|
11
|
+
- Python 3.11 or newer
|
|
12
12
|
- [pip](https://pip.pypa.io/en/stable/)
|
|
13
13
|
- [make](https://www.gnu.org/software/make/) (optional; the same commands are
|
|
14
14
|
listed below)
|
|
@@ -63,7 +63,8 @@ Never commit `~/.copper-pilot/.state/auth.json`, API keys, or private boards.
|
|
|
63
63
|
3. Add or update tests. Coverage of new branches in `src/copper_pilot_cli`
|
|
64
64
|
(except `_upstream/`) is expected.
|
|
65
65
|
4. Update docs when behavior changes: [README.md](README.md),
|
|
66
|
-
[docs/cli.md](docs/cli.md),
|
|
66
|
+
[docs/cli.md](docs/cli.md), [docs/harness.md](docs/harness.md), or
|
|
67
|
+
[docs/development.md](docs/development.md).
|
|
67
68
|
5. Run `make fmt && make lint && make test`.
|
|
68
69
|
6. Open a pull request with the template. Fill in the test plan.
|
|
69
70
|
|
|
@@ -78,10 +79,14 @@ Keep this client a hosted-agent frontend. Do not add:
|
|
|
78
79
|
- Model or provider pickers
|
|
79
80
|
- Local model execution
|
|
80
81
|
- Computer use
|
|
81
|
-
- MCP
|
|
82
|
+
- An MCP **host**, generic plugin runtime, or MCP **client** stack
|
|
82
83
|
- LangSmith tracing or content telemetry
|
|
83
84
|
- Sandbox runtimes
|
|
84
85
|
|
|
86
|
+
A thin MCP **server** (`copper-pilot mcp`) and a Claude Code plugin that only
|
|
87
|
+
wraps that server are in scope. They delegate to the hosted agent; they do not
|
|
88
|
+
reimplement it.
|
|
89
|
+
|
|
85
90
|
Upstream Textual presentation is vendored under
|
|
86
91
|
`src/copper_pilot_cli/_upstream/` with provenance in [UPSTREAM.md](UPSTREAM.md)
|
|
87
92
|
and [NOTICE](NOTICE). When porting upstream changes, follow that document;
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
Changelog
|
|
2
|
+
=========
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
(unreleased)
|
|
6
|
+
------------
|
|
7
|
+
- Merge pull request #11 from
|
|
8
|
+
CopperPilot/feat/python_versions_support_expansion. [Aditya]
|
|
9
|
+
|
|
10
|
+
Support Python 3.11 and future releases
|
|
11
|
+
- Ci: probe Python 3.15 weekly instead of on pull requests. [AdityaNG]
|
|
12
|
+
|
|
13
|
+
Keep the upstream install failure visible without turning required pull request checks red.
|
|
14
|
+
- Feat(py11) [AdityaNG]
|
|
15
|
+
- Merge pull request #7 from CopperPilot/feat/example_002_cm5_camera.
|
|
16
|
+
[Aditya]
|
|
17
|
+
|
|
18
|
+
feat(examples/002_cm5_camera): add 3D pose audit and generated carrier
|
|
19
|
+
- Fix(examples/002_cm5_camera): render the README PCB as a dimetric 3D
|
|
20
|
+
view. [AdityaNG, Cursor]
|
|
21
|
+
|
|
22
|
+
Use an orthogonal high-quality camera with a slight isometric tilt so the
|
|
23
|
+
hero PNG shows connector height instead of a flat top-down shot.
|
|
24
|
+
- Fix(examples/002_cm5_camera): skip library dirs relative to the
|
|
25
|
+
workspace. [AdityaNG, Cursor]
|
|
26
|
+
|
|
27
|
+
Absolute path parts named tmp (Linux /tmp pytest roots) were skipping the
|
|
28
|
+
entire haystack, so libraries_ready failed on Ubuntu CI.
|
|
29
|
+
- Feat(examples/002_cm5_camera): add 3D pose audit and generated
|
|
30
|
+
carrier. [AdityaNG, Cursor]
|
|
31
|
+
|
|
32
|
+
Lock connector 3D offsets, Module1 pad orientation, and the generated
|
|
33
|
+
KiCad project so the example reproduces NANO-C assembly parity.
|
|
34
|
+
- Feat(examples/002_cm5_camera/main.py): new example. [AdityaNG]
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
0.1.6 (2026-09-18)
|
|
38
|
+
------------------
|
|
39
|
+
- Release: version 0.1.6 🚀 [AdityaNG]
|
|
40
|
+
- Merge pull request #6 from CopperPilot/feat/plugins. [Aditya]
|
|
41
|
+
|
|
42
|
+
feat: add MCP conductor and Claude Code plugin
|
|
43
|
+
- Clarify server restrictions in PR template. [Aditya]
|
|
44
|
+
|
|
45
|
+
Updated checklist item to clarify server restrictions.
|
|
46
|
+
- Feat: add MCP conductor and Claude Code plugin. [AdityaNG, Cursor]
|
|
47
|
+
|
|
48
|
+
Let Claude Code, Cursor, and Codex delegate electronics work to the hosted agent via copper-pilot mcp, a portable review skill, and an in-repo plugin.
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
0.1.5 (2026-09-17)
|
|
52
|
+
------------------
|
|
53
|
+
- Release: version 0.1.5 🚀 [AdityaNG]
|
|
54
|
+
- Fix(README.md) [AdityaNG]
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
0.1.4 (2026-09-17)
|
|
58
|
+
------------------
|
|
59
|
+
- Release: version 0.1.4 🚀 [AdityaNG]
|
|
60
|
+
- Fix(tests/test_release_gates.py) [AdityaNG]
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
0.1.3 (2026-09-17)
|
|
64
|
+
------------------
|
|
65
|
+
- Release: version 0.1.3 🚀 [AdityaNG]
|
|
66
|
+
- Docs. [AdityaNG]
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
0.1.2 (2026-09-17)
|
|
70
|
+
------------------
|
|
71
|
+
- Release: version 0.1.2 🚀 [AdityaNG]
|
|
72
|
+
- Ci(pyproject.toml) [AdityaNG]
|
|
73
|
+
- Fix(tests/test_tui.py) [AdityaNG]
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
0.1.1 (2026-09-17)
|
|
77
|
+
------------------
|
|
78
|
+
- Release: version 0.1.1 🚀 [AdityaNG]
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
0.1.0 (2026-09-17)
|
|
82
|
+
------------------
|
|
83
|
+
- Release: version 0.1.0 🚀 [AdityaNG]
|
|
84
|
+
- Fix(tests/test_release_gates.py) [AdityaNG]
|
|
85
|
+
- Test. [AdityaNG]
|
|
86
|
+
- Docs. [AdityaNG]
|
|
87
|
+
- Docs. [AdityaNG]
|
|
88
|
+
- Example(examples/001_esp32/) [AdityaNG]
|
|
89
|
+
- Makefile. [AdityaNG]
|
|
90
|
+
- Ci. [AdityaNG]
|
|
91
|
+
- Docs. [AdityaNG]
|
|
92
|
+
- Refactor(name) [AdityaNG]
|
|
93
|
+
- Init. [AdityaNG]
|
|
94
|
+
|
|
95
|
+
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: copper-pilot-cli
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.7
|
|
4
4
|
Summary: CopperPilot hosted agent for the terminal and LangChain
|
|
5
5
|
Project-URL: Homepage, https://copperpilot.ai
|
|
6
6
|
Project-URL: Repository, https://github.com/CopperPilot/copper-pilot-cli
|
|
@@ -14,10 +14,11 @@ License-File: NOTICE
|
|
|
14
14
|
Classifier: License :: OSI Approved :: MIT License
|
|
15
15
|
Classifier: Programming Language :: Python :: 3
|
|
16
16
|
Classifier: Programming Language :: Python :: 3 :: Only
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
17
18
|
Classifier: Programming Language :: Python :: 3.12
|
|
18
19
|
Classifier: Programming Language :: Python :: 3.13
|
|
19
20
|
Classifier: Programming Language :: Python :: 3.14
|
|
20
|
-
Requires-Python:
|
|
21
|
+
Requires-Python: >=3.11
|
|
21
22
|
Requires-Dist: aiosqlite<1,>=0.22
|
|
22
23
|
Requires-Dist: certifi>=2024.8.30
|
|
23
24
|
Requires-Dist: deepagents==0.7.14
|
|
@@ -26,6 +27,7 @@ Requires-Dist: langchain-core<2,>=1.6
|
|
|
26
27
|
Requires-Dist: langgraph-checkpoint-sqlite<4,>=3.1
|
|
27
28
|
Requires-Dist: langgraph<2,>=1.2
|
|
28
29
|
Requires-Dist: markdownify<2,>=1.2
|
|
30
|
+
Requires-Dist: mcp<2,>=1.21
|
|
29
31
|
Requires-Dist: packaging<27,>=25
|
|
30
32
|
Requires-Dist: pillow<13,>=12
|
|
31
33
|
Requires-Dist: pydantic<3,>=2.12
|
|
@@ -85,9 +87,9 @@ CopperPilot in your terminal: a thin, open-source client for CopperPilot electro
|
|
|
85
87
|
|
|
86
88
|
## Prerequisites
|
|
87
89
|
|
|
88
|
-
- Python 3.
|
|
90
|
+
- Python 3.11 or newer
|
|
89
91
|
- A [CopperPilot](https://copperpilot.ai) account for login
|
|
90
|
-
- KiCad 10 on `PATH` only if you run [`examples/001_esp32`](examples/001_esp32)
|
|
92
|
+
- KiCad 10 on `PATH` only if you run [`examples/001_esp32`](examples/001_esp32) or [`examples/002_cm5_camera`](examples/002_cm5_camera)
|
|
91
93
|
|
|
92
94
|
## Install and run
|
|
93
95
|
|
|
@@ -111,6 +113,27 @@ Both `copper-pilot` and `copper-pilot-cli` run the same program.
|
|
|
111
113
|
`copper-pilot --help` lists flags; [docs/cli.md](docs/cli.md) is the full
|
|
112
114
|
command reference.
|
|
113
115
|
|
|
116
|
+
## Use from Claude Code, Cursor, or Codex
|
|
117
|
+
|
|
118
|
+
CopperPilot stays the electronics agent. Copy
|
|
119
|
+
[`skills/copper-pilot-review/SKILL.md`](skills/copper-pilot-review/SKILL.md) into
|
|
120
|
+
your harness, or expose the same agent over MCP:
|
|
121
|
+
|
|
122
|
+
```console
|
|
123
|
+
claude mcp add copper-pilot -- copper-pilot mcp
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
Claude Code can also install the in-repo plugin:
|
|
127
|
+
|
|
128
|
+
```text
|
|
129
|
+
/plugin marketplace add CopperPilot/copper-pilot-cli
|
|
130
|
+
/plugin install copper-pilot
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
That plugin starts `copper-pilot mcp` and adds `@copper-pilot` plus
|
|
134
|
+
`/copper-pilot-review`. Setup for Cursor, Codex, and approvals:
|
|
135
|
+
[docs/harness.md](docs/harness.md).
|
|
136
|
+
|
|
114
137
|
## Configuration
|
|
115
138
|
|
|
116
139
|
- Production API: `https://copperpilot.ai`
|
|
@@ -148,7 +171,8 @@ Deep Agent. The compatible `deepagents` runtime is installed and pinned by this
|
|
|
148
171
|
package.
|
|
149
172
|
|
|
150
173
|
That snippet is the runnable example in
|
|
151
|
-
[`examples/001_esp32`](examples/001_esp32).
|
|
174
|
+
[`examples/001_esp32`](examples/001_esp32). A phased CM5 camera carrier lives in
|
|
175
|
+
[`examples/002_cm5_camera`](examples/002_cm5_camera).
|
|
152
176
|
|
|
153
177
|
## Security boundary
|
|
154
178
|
|
|
@@ -162,8 +186,9 @@ Filesystem, search, edit, and shell execution use Deep Agents' native
|
|
|
162
186
|
normalizes hosted tool names, approval decisions, and result envelopes.
|
|
163
187
|
|
|
164
188
|
Computer use, model/provider selection, local model execution, LangSmith
|
|
165
|
-
tracing, content telemetry, MCP
|
|
166
|
-
are not part of this package.
|
|
189
|
+
tracing, content telemetry, MCP **host**/plugin-runtime controls, and server
|
|
190
|
+
implementation code are not part of this package. A thin MCP **server**
|
|
191
|
+
(`copper-pilot mcp`) that delegates to the hosted agent is.
|
|
167
192
|
|
|
168
193
|
See [UPSTREAM.md](UPSTREAM.md) and [NOTICE](NOTICE) for the retained Textual
|
|
169
194
|
client attribution.
|
|
@@ -36,9 +36,9 @@ CopperPilot in your terminal: a thin, open-source client for CopperPilot electro
|
|
|
36
36
|
|
|
37
37
|
## Prerequisites
|
|
38
38
|
|
|
39
|
-
- Python 3.
|
|
39
|
+
- Python 3.11 or newer
|
|
40
40
|
- A [CopperPilot](https://copperpilot.ai) account for login
|
|
41
|
-
- KiCad 10 on `PATH` only if you run [`examples/001_esp32`](examples/001_esp32)
|
|
41
|
+
- KiCad 10 on `PATH` only if you run [`examples/001_esp32`](examples/001_esp32) or [`examples/002_cm5_camera`](examples/002_cm5_camera)
|
|
42
42
|
|
|
43
43
|
## Install and run
|
|
44
44
|
|
|
@@ -62,6 +62,27 @@ Both `copper-pilot` and `copper-pilot-cli` run the same program.
|
|
|
62
62
|
`copper-pilot --help` lists flags; [docs/cli.md](docs/cli.md) is the full
|
|
63
63
|
command reference.
|
|
64
64
|
|
|
65
|
+
## Use from Claude Code, Cursor, or Codex
|
|
66
|
+
|
|
67
|
+
CopperPilot stays the electronics agent. Copy
|
|
68
|
+
[`skills/copper-pilot-review/SKILL.md`](skills/copper-pilot-review/SKILL.md) into
|
|
69
|
+
your harness, or expose the same agent over MCP:
|
|
70
|
+
|
|
71
|
+
```console
|
|
72
|
+
claude mcp add copper-pilot -- copper-pilot mcp
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
Claude Code can also install the in-repo plugin:
|
|
76
|
+
|
|
77
|
+
```text
|
|
78
|
+
/plugin marketplace add CopperPilot/copper-pilot-cli
|
|
79
|
+
/plugin install copper-pilot
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
That plugin starts `copper-pilot mcp` and adds `@copper-pilot` plus
|
|
83
|
+
`/copper-pilot-review`. Setup for Cursor, Codex, and approvals:
|
|
84
|
+
[docs/harness.md](docs/harness.md).
|
|
85
|
+
|
|
65
86
|
## Configuration
|
|
66
87
|
|
|
67
88
|
- Production API: `https://copperpilot.ai`
|
|
@@ -99,7 +120,8 @@ Deep Agent. The compatible `deepagents` runtime is installed and pinned by this
|
|
|
99
120
|
package.
|
|
100
121
|
|
|
101
122
|
That snippet is the runnable example in
|
|
102
|
-
[`examples/001_esp32`](examples/001_esp32).
|
|
123
|
+
[`examples/001_esp32`](examples/001_esp32). A phased CM5 camera carrier lives in
|
|
124
|
+
[`examples/002_cm5_camera`](examples/002_cm5_camera).
|
|
103
125
|
|
|
104
126
|
## Security boundary
|
|
105
127
|
|
|
@@ -113,8 +135,9 @@ Filesystem, search, edit, and shell execution use Deep Agents' native
|
|
|
113
135
|
normalizes hosted tool names, approval decisions, and result envelopes.
|
|
114
136
|
|
|
115
137
|
Computer use, model/provider selection, local model execution, LangSmith
|
|
116
|
-
tracing, content telemetry, MCP
|
|
117
|
-
are not part of this package.
|
|
138
|
+
tracing, content telemetry, MCP **host**/plugin-runtime controls, and server
|
|
139
|
+
implementation code are not part of this package. A thin MCP **server**
|
|
140
|
+
(`copper-pilot mcp`) that delegates to the hosted agent is.
|
|
118
141
|
|
|
119
142
|
See [UPSTREAM.md](UPSTREAM.md) and [NOTICE](NOTICE) for the retained Textual
|
|
120
143
|
client attribution.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
0.1.7
|
|
@@ -6,9 +6,10 @@
|
|
|
6
6
|
copper-pilot --help
|
|
7
7
|
copper-pilot auth --help
|
|
8
8
|
copper-pilot threads --help
|
|
9
|
+
copper-pilot mcp --help
|
|
9
10
|
```
|
|
10
11
|
|
|
11
|
-
Python 3.
|
|
12
|
+
Python 3.11 or newer is required. Install with `pip install copper-pilot-cli`.
|
|
12
13
|
|
|
13
14
|
## Chat
|
|
14
15
|
|
|
@@ -43,6 +44,30 @@ copper-pilot ./my-board --mode plan -m "Propose a power tree"
|
|
|
43
44
|
```
|
|
44
45
|
|
|
45
46
|
Headless mode is also used when `--message` is set and stdout is not a TTY.
|
|
47
|
+
With `--json --no-stream`, the document includes `thread_id` so a later run can
|
|
48
|
+
pass `--resume`.
|
|
49
|
+
|
|
50
|
+
## MCP
|
|
51
|
+
|
|
52
|
+
```console
|
|
53
|
+
copper-pilot mcp
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
Serves a stdio MCP conductor for Claude Code, Cursor, Codex, and other MCP
|
|
57
|
+
hosts. Uses the stored device-login credential. Does not open a browser. Do not
|
|
58
|
+
write to stdout; the protocol owns it.
|
|
59
|
+
|
|
60
|
+
| Tool | Role |
|
|
61
|
+
|------|------|
|
|
62
|
+
| `status` | Login state and discovered schematic/PCB paths. No hosted call. |
|
|
63
|
+
| `ask` | `--mode ask`. Auto approval. Optional `thread_id`. |
|
|
64
|
+
| `plan` | `--mode plan`. Auto approval. |
|
|
65
|
+
| `run` | `--mode agent`. `approval` is `auto` (default) or `yolo`. |
|
|
66
|
+
| `resume` | Continue `thread_id`. Same approval as `run`. |
|
|
67
|
+
| `threads_list` | List threads for this workspace (`limit`, `all_workspaces`). |
|
|
68
|
+
|
|
69
|
+
Workspace is the tool argument, else `CLAUDE_PROJECT_DIR`, else the process
|
|
70
|
+
current directory. Manual approval is TUI-only. See [harness.md](harness.md).
|
|
46
71
|
|
|
47
72
|
## Auth
|
|
48
73
|
|
|
@@ -10,6 +10,9 @@ src/copper_pilot_cli/ Python package
|
|
|
10
10
|
tests/ pytest suite
|
|
11
11
|
examples/ Runnable examples
|
|
12
12
|
docs/ User and developer docs
|
|
13
|
+
skills/ Portable Agent Skill for other harnesses
|
|
14
|
+
plugins/ Claude Code plugin (not in the PyPI wheel)
|
|
15
|
+
.claude-plugin/ Plugin marketplace manifest
|
|
13
16
|
.github/ CI, issue forms, pull request template
|
|
14
17
|
```
|
|
15
18
|
|
|
@@ -18,7 +21,7 @@ See [UPSTREAM.md](../UPSTREAM.md) and [NOTICE](../NOTICE).
|
|
|
18
21
|
|
|
19
22
|
## Environment
|
|
20
23
|
|
|
21
|
-
Python 3.
|
|
24
|
+
Python 3.11 or newer. From the repository root:
|
|
22
25
|
|
|
23
26
|
```console
|
|
24
27
|
python3 -m venv .venv
|
|
@@ -36,6 +39,12 @@ pip install -e ".[dev]"
|
|
|
36
39
|
|
|
37
40
|
CI also runs `pip-audit`, `piplicenses` (fails on GPL/AGPL/UNKNOWN), a wheel
|
|
38
41
|
build, and `copper-pilot --version` / `copper-pilot-cli --version`.
|
|
42
|
+
Required CI covers every supported stable Python minor on Linux and the minimum
|
|
43
|
+
supported minor on macOS and Windows. Python 3.15 is probed weekly, outside
|
|
44
|
+
pull requests, by `.github/workflows/forward-python.yml`. When that scheduled
|
|
45
|
+
run is green, add the `Programming Language :: Python :: 3.15` classifier, add
|
|
46
|
+
3.15 to the required CI matrix, and retarget the scheduled probe at the next
|
|
47
|
+
unreleased Python.
|
|
39
48
|
|
|
40
49
|
## Tests
|
|
41
50
|
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
# Use CopperPilot from Claude Code, Cursor, or Codex
|
|
2
|
+
|
|
3
|
+
CopperPilot stays the electronics agent. The outer tool (Claude Code, Cursor,
|
|
4
|
+
Codex, or a script) only **delegates**. Do not hand-edit KiCad files while a
|
|
5
|
+
CopperPilot run is in flight.
|
|
6
|
+
|
|
7
|
+
Install the CLI and log in once from a terminal:
|
|
8
|
+
|
|
9
|
+
```console
|
|
10
|
+
pip install copper-pilot-cli
|
|
11
|
+
copper-pilot auth login
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
## Option 1: shell out to the CLI
|
|
15
|
+
|
|
16
|
+
Copy [`skills/copper-pilot-review/SKILL.md`](../skills/copper-pilot-review/SKILL.md)
|
|
17
|
+
into the skill location your harness reads:
|
|
18
|
+
|
|
19
|
+
| Harness | Skill location |
|
|
20
|
+
|---------|----------------|
|
|
21
|
+
| Claude Code | `~/.claude/skills/copper-pilot-review/SKILL.md` or the project's `.claude/skills/` |
|
|
22
|
+
| Cursor | `.cursor/skills/copper-pilot-review/SKILL.md` or project rules that point at the file |
|
|
23
|
+
| Codex | `AGENTS.md` or the project's skill directory, depending on your Codex setup |
|
|
24
|
+
|
|
25
|
+
Then ask the outer agent to review the board. It should run:
|
|
26
|
+
|
|
27
|
+
```console
|
|
28
|
+
copper-pilot -n -m "Review this board" --json --no-stream --mode ask
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
`--json --no-stream` prints one JSON document. `thread_id` is included so the
|
|
32
|
+
next turn can pass `--resume THREAD_ID`.
|
|
33
|
+
|
|
34
|
+
Use `--mode plan` for a plan, `--mode agent -y` for Auto local writes, and
|
|
35
|
+
`--yolo` only when the user asked to skip local approval.
|
|
36
|
+
|
|
37
|
+
## Option 2: MCP conductor (`copper-pilot mcp`)
|
|
38
|
+
|
|
39
|
+
The same process as the CLI, same stored credential. Stdio JSON-RPC; do not
|
|
40
|
+
write logs to stdout.
|
|
41
|
+
|
|
42
|
+
### Claude Code
|
|
43
|
+
|
|
44
|
+
```console
|
|
45
|
+
claude mcp add copper-pilot -- copper-pilot mcp
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
Or install the in-repo plugin (starts the same server automatically):
|
|
49
|
+
|
|
50
|
+
```text
|
|
51
|
+
/plugin marketplace add CopperPilot/copper-pilot-cli
|
|
52
|
+
/plugin install copper-pilot
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
Local checkout:
|
|
56
|
+
|
|
57
|
+
```console
|
|
58
|
+
claude --plugin-dir plugins/copper-pilot
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
The plugin also registers `@copper-pilot` and `/copper-pilot-review`.
|
|
62
|
+
|
|
63
|
+
### Cursor
|
|
64
|
+
|
|
65
|
+
Add a stdio server in `.cursor/mcp.json`:
|
|
66
|
+
|
|
67
|
+
```json
|
|
68
|
+
{
|
|
69
|
+
"mcpServers": {
|
|
70
|
+
"copper-pilot": {
|
|
71
|
+
"command": "copper-pilot",
|
|
72
|
+
"args": ["mcp"]
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
### Codex and other MCP hosts
|
|
79
|
+
|
|
80
|
+
Point the host at `copper-pilot mcp` on stdio. Tools:
|
|
81
|
+
|
|
82
|
+
| Tool | Role |
|
|
83
|
+
|------|------|
|
|
84
|
+
| `status` | Login state and discovered schematic/PCB paths |
|
|
85
|
+
| `ask` | Read-oriented specialist (`--mode ask`) |
|
|
86
|
+
| `plan` | Plan without applying (`--mode plan`) |
|
|
87
|
+
| `run` | Mutating agent turn (`--mode agent`) |
|
|
88
|
+
| `resume` | Continue `thread_id` (`mode` defaults to `agent`; pass `mode="ask"` to keep it read-only) |
|
|
89
|
+
| `threads_list` | List threads for this workspace |
|
|
90
|
+
|
|
91
|
+
Workspace is the tool `workspace` argument, else `CLAUDE_PROJECT_DIR`, else the
|
|
92
|
+
process current directory.
|
|
93
|
+
|
|
94
|
+
## Approval
|
|
95
|
+
|
|
96
|
+
| Mode | Where | Behavior |
|
|
97
|
+
|------|-------|----------|
|
|
98
|
+
| Manual | Interactive CLI / TUI only | Prompt before gated writes and shell |
|
|
99
|
+
| Auto | Harness default (`-y`, MCP `approval=auto`) | Routine writes and known-safe shell |
|
|
100
|
+
| YOLO | Explicit `--yolo` or MCP `approval=yolo` | All local side effects. Never saved |
|
|
101
|
+
|
|
102
|
+
MCP cannot show the TUI, so Manual is not available there. `ask` and `plan`
|
|
103
|
+
always use Auto. `run` and `resume` default to Auto.
|
|
104
|
+
|
|
105
|
+
Missing credentials: MCP tools return `login_required` and tell the user to run
|
|
106
|
+
`copper-pilot auth login`. The server does not open a browser.
|
|
107
|
+
|
|
108
|
+
See [docs/cli.md](cli.md) for the full command reference.
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
# Project Implementation Plans
|
|
2
|
+
|
|
3
|
+
| Plan | Target | Status | Overview |
|
|
4
|
+
| :--- | :--- | :--- | :--- |
|
|
5
|
+
| [cm5-camera-carrier](plans/cm5-camera-carrier.plan.md) | CM5 Nano Camera Carrier | `open` | 55.0 x 40.0 mm 6-layer nano camera carrier for CM5 with onboard IMX219-D160, DF40 mezzanine, Mini-HDMI, DSI, USB-C, vertical USB-A, Micro SD, and 40-pin GPIO. |
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# CM5 Nano Camera Carrier Project Index
|
|
2
|
+
|
|
3
|
+
## Project Summary
|
|
4
|
+
High-density nano camera carrier board for the Raspberry Pi Compute Module 5 (CM5). Integrates an onboard Sony IMX219-D160 image sensor, high-speed display/video outputs (Mini-HDMI, 15-pin DSI FPC), dual-role USB routing with FSUSB42UMX switch, power management, Micro SD storage, and a 40-pin GPIO header into an ultra-compact 55.0 x 40.0 mm footprint.
|
|
5
|
+
|
|
6
|
+
## Key Specifications
|
|
7
|
+
- **Dimensions**: 55.0 x 40.0 mm with 3.0 mm corner radii and 4x M2.5 mounting holes.
|
|
8
|
+
- **Layer Stackup**: 6-layer controlled impedance stackup (100 ohm differential pairs for HDMI, CSI, DSI; 90 ohm differential pairs for USB).
|
|
9
|
+
- **Compute Module Interface**: Dual 100-pin Hirose DF40 mezzanine connectors H1A/H1B for CM5 (5V in, 3.3V/1.8V out, GPIO, I2C/SPI/UART, MIPI CSI/DSI, HDMI, nRPIBOOT, RUN_PG, GLOBAL_EN).
|
|
10
|
+
- **Onboard Camera**: IMX219-D160 with triple LDOs:
|
|
11
|
+
- RT9193-28GB (VA2V8, 2.8V analog)
|
|
12
|
+
- RT9193-18GB (VO1V8, 1.8V I/O)
|
|
13
|
+
- RT9013-12 (VD1V2, 1.2V digital core)
|
|
14
|
+
- 24.000 MHz crystal oscillator through 22 ohm damping resistor to MCLK
|
|
15
|
+
- DMG1012T I2C level shift (3.3V to 1.8V)
|
|
16
|
+
- MCF1210BF2-900T01 common-mode noise filters on CAM0_D0, CAM0_D1, and CAM0_CLK
|
|
17
|
+
- **Power Architecture**:
|
|
18
|
+
- USB-C power input into CM5_5V with 5.1 kOhm CC pulldown resistors
|
|
19
|
+
- MP1658GTF-Z synchronous step-down converter for PWR_3V3
|
|
20
|
+
- DIO7003HCST5 load switches for HDMI_5V and SD_3.3V
|
|
21
|
+
- STMPS2171STR power switch for USB_5V
|
|
22
|
+
- **USB Subsystem**:
|
|
23
|
+
- FSUSB42UMX high-speed USB switch multiplexing USB0 between USB-C (rpiboot provisioning) and vertical USB-A (host peripheral), selected by USB_SEL jumper
|
|
24
|
+
- **Peripherals & Indicators**:
|
|
25
|
+
- Mini-HDMI video output
|
|
26
|
+
- 15-pin 1.0 mm pitch DSI FPC connector
|
|
27
|
+
- Micro SD card slot (TF1)
|
|
28
|
+
- 40-pin standard GPIO header (PI1)
|
|
29
|
+
- User push-button Key1 connected to GPIO21
|
|
30
|
+
- Power (PWR) and Activity (ACT) LEDs
|
|
31
|
+
|
|
32
|
+
## References
|
|
33
|
+
- `cm5-minima-rev3`: Cloned and upgraded in-place to KiCad 10.0 under `.copperpilot/references/cm5-minima-rev3/`.
|