The AI for PCB design, in your terminal.
CopperPilot in your terminal: a thin, open-source client for CopperPilot electronics design agent, the best AI for PCB Design.
Prerequisites
- Python 3.12 or newer
- A CopperPilot account for login
- KiCad 10 on
PATHonly if you runexamples/001_esp32
Install and run
pip install copper-pilot-cli
copper-pilot
The first interactive launch opens a browser for CopperPilot device login. With no path argument, the current directory is the workspace and a new chat starts immediately. Any existing directory is valid.
copper-pilot ./my-board
copper-pilot --resume
copper-pilot threads list
copper-pilot -n -m "Review this board" --json
Both copper-pilot and copper-pilot-cli run the same program.
copper-pilot --help lists flags; docs/cli.md is the full
command reference.
Configuration
- Production API:
https://copperpilot.ai - Development override:
COPPER_PILOT_API_URL - User state:
~/.copper-pilot/.state - Project artifacts:
.copperpilot/
Credentials are stored in a private, atomically replaced auth.json; on POSIX
the parent directory is mode 0700 and the file is mode 0600.
LangChain
from copper_pilot_cli.copper_protocol import CopperMode
from copper_pilot_cli.langchain import CopperPilotAgent
from helper import drc_violations, erc_errors, render_pcb, run
PLAN = CopperMode.PLAN
copper_pilot = CopperPilotAgent(workspace="esp32")
run(copper_pilot, "Build me an ESP32 dev board.", PLAN)
run(copper_pilot, "Let us build this plan.")
run(copper_pilot, "Inspect the PCB, check for any missing 3D models, and apply them accordingly.")
assert erc_errors() == 0
assert drc_violations() == 0
render_pcb("esp32.png")
CopperPilotAgent is a Runnable, not a chat model. It represents a complete
hosted agent run, including local tool requests. Use as_langgraph() for graph
composition or as_compiled_subagent() for explicit delegation from an outer
Deep Agent. The compatible deepagents runtime is installed and pinned by this
package.
That snippet is the runnable example in
examples/001_esp32.
Security boundary
The hosted agent may request local filesystem and shell tools. Reads and searches run freely. Writes, edits, deletes, and shell commands are gated by Manual approval by default. Auto permits only deterministic routine actions; unknown actions still ask. YOLO must be selected explicitly.
Filesystem, search, edit, and shell execution use Deep Agents' native
FilesystemMiddleware tools and LocalShellBackend; CopperPilot's adapter only
normalizes hosted tool names, approval decisions, and result envelopes.
Computer use, model/provider selection, local model execution, LangSmith tracing, content telemetry, MCP/plugin controls, and server implementation code are not part of this package.
See UPSTREAM.md and NOTICE for the retained Textual client attribution.
To report a vulnerability, see SECURITY.md.
Development
pip install -e ".[dev]"
make fmt
make lint
make test
make test runs pytest -m "not live". Live tests skip unless a CopperPilot
credential is stored. Release tagging is make release. Details:
docs/development.md.
Contributing
Bug reports, features, and pull requests are welcome. Please read CONTRIBUTING.md and the Code of Conduct. Use the bug report form so we can reproduce the problem.
License
MIT.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file copper_pilot_cli-0.1.2.tar.gz.
File metadata
- Download URL: copper_pilot_cli-0.1.2.tar.gz
- Upload date:
- Size: 3.6 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f7d1f26e8c5eb420c69dc1766fcfb0add63e66be925e6d0de5df733678596dae
|
|
| MD5 |
fc7699afdbb483eb53166248efcebff8
|
|
| BLAKE2b-256 |
66a98a330f4c559da8bc1b8e8035d04e212807dae338411946dbbf40803d8d0f
|
Provenance
The following attestation bundles were made for copper_pilot_cli-0.1.2.tar.gz:
Publisher:
release.yml on CopperPilot/copper-pilot-cli
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
copper_pilot_cli-0.1.2.tar.gz -
Subject digest:
f7d1f26e8c5eb420c69dc1766fcfb0add63e66be925e6d0de5df733678596dae - Sigstore transparency entry: 2878630615
- Sigstore integration time:
-
Permalink:
CopperPilot/copper-pilot-cli@d4497ad32de9480ec2b0f87e191f3ba96b2e64f1 -
Branch / Tag:
refs/tags/0.1.2 - Owner: https://github.com/CopperPilot
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@d4497ad32de9480ec2b0f87e191f3ba96b2e64f1 -
Trigger Event:
push
-
Statement type:
File details
Details for the file copper_pilot_cli-0.1.2-py3-none-any.whl.
File metadata
- Download URL: copper_pilot_cli-0.1.2-py3-none-any.whl
- Upload date:
- Size: 95.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0d8bf0b53a8be18aac6bc9077b0a5c8c956e67276d8cd820787010e7ca2de862
|
|
| MD5 |
d7054ffcbe4e7aa4f5cba30f68ebc443
|
|
| BLAKE2b-256 |
099f58ef4a9238c81db22e73a676d23c7468da689017565324988d0cd397b037
|
Provenance
The following attestation bundles were made for copper_pilot_cli-0.1.2-py3-none-any.whl:
Publisher:
release.yml on CopperPilot/copper-pilot-cli
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
copper_pilot_cli-0.1.2-py3-none-any.whl -
Subject digest:
0d8bf0b53a8be18aac6bc9077b0a5c8c956e67276d8cd820787010e7ca2de862 - Sigstore transparency entry: 2878630713
- Sigstore integration time:
-
Permalink:
CopperPilot/copper-pilot-cli@d4497ad32de9480ec2b0f87e191f3ba96b2e64f1 -
Branch / Tag:
refs/tags/0.1.2 - Owner: https://github.com/CopperPilot
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@d4497ad32de9480ec2b0f87e191f3ba96b2e64f1 -
Trigger Event:
push
-
Statement type: