ccip-terminal Documentation
ccip-terminal is a Python package and CLI for managing cross-chain token transfers using Chainlink CCIP.
The package can be considered a self-custodial bridge; it supports batch transfers, scheduled jobs, CCIP status monitoring, and address book utilities.
For now the package only supports USDC; other currencies will be added later.
This package supports testnet CCIP as well.
Installation
# Install via uv
pip install uv # Only if not already installed
uv pip install ccip_terminal[all] # For both core and scheduler packages
# By name
uv pip install ccip-terminal # Base library
uv pip install ccip-terminal[scheduler]
uv pip install ccip-terminal[all] #Both base and scheduler
CLI Usage
uv run python cli.py [COMMAND] [OPTIONS]
Commands
transfer
Send a USDC transfer via Chainlink CCIP.
Options
| Option | Description |
|---|---|
--to |
Destination wallet address |
--dest |
Destination chain |
--amount |
Amount to send |
--source |
(optional) Source chain (default: ethereum) |
--batch-file |
(optional) Path to batch JSON or CSV file |
--account-index |
(optional) Account index to use |
--wait-status |
(optional) Wait for CCIP Tx to Finalize |
--notify-email |
(optional) Email address to notify |
--estimate |
(optional) A Fee Estimate Value |
Examples
Single Transfer:
python cli.py transfer --to 0xabc... --dest arbitrum --amount 10
Batch Transfer:
python cli.py transfer --batch-file ./transfers/batch.json
ccip-status
Check the status of a CCIP message.
Options
| Option | Description |
|---|---|
--message-id |
CCIP message ID (with 0x) |
--dest-chain |
Destination chain |
--wait |
(optional) Wait for confirmation |
--timeout |
(optional) Max wait time in seconds |
--interval |
(optional) Polling interval in seconds |
Example
python cli.py ccip-status --message-id 0xabc... --dest-chain optimism
schedule-transfer
Schedule a recurring transfer using cron.
Options
| Option | Description |
|---|---|
--to |
Destination wallet address |
--amount |
Amount to send |
--dest |
Destination chain |
--source |
(optional) Source chain |
--account-index |
(optional) Account index |
--cron |
Cron expression |
Example
python cli.py schedule-transfer --to 0xabc... --amount 5 --dest optimism --cron "0 9 * * *"
address
Manage a local address book.
Subcommands
add→ Save a new addresslist→ View saved addressesremove→ Delete an address by name
Examples
python cli.py address add --name Alice --address 0xabc...
python cli.py address list
python cli.py address remove --name Alice
Project Structure
ccip_terminal/
├── cli.py
├── ccip_terminal/
│ ├── core.py
│ ├── ccip.py
│ ├── logger.py
│ ├── accounts.py
│ ├── env.py
│ └── ...
├── scheduler/
│ └── ...
├── address_book.json
├── README.md
Environment Variables
Create a .env file and include:
PRIVATE_KEYS=
COINGECKO_API_KEY =
ALCHEMY_API_KEY =
INFURA_API_KEY =
NOTIFY_EMAIL =
ETHERSCAN_API_KEY =
SMTP_SERVER=
SMTP_PORT=587
SMTP_USER=
SMTP_PASSWORD=
NETWORK_TYPE=
INFURA_API_KEY is the only required variable, but ETHERSCAN_API_KEY is also reccomended for accurate gas estimation.
NETWORK_TYPE environment variable expects either "testnet" or "mainnet", and defaults to "mainnet"
License
MIT License
Contact Info
Metadata
Release files for ccip-terminal 0.1.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| ccip_terminal-0.1.3.tar.gz | 31.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| ccip_terminal-0.1.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 65.5 kB
Release files / ccip_terminal-0.1.3.tar.gz
| Download URL | ccip_terminal-0.1.3.tar.gz |
|---|---|
| Size | 31.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
861907de84f937e406b8d5bc0aa2c7dc9e5369ab69abf3125b3fc06391329f9b
|
|
BLAKE2b-256 checksum How to use checksums |
f7b2bb68ff29a70e2aaa81131fba5f8ebb8d4868c39a813a59b6fce9a62a9521
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.3
|
Release files / ccip_terminal-0.1.3-py3-none-any.whl
| Download URL | ccip_terminal-0.1.3-py3-none-any.whl |
|---|---|
| Size | 34.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
424e14caca7cd5e2ed47897997adaa4c7d5a021e7769b1a6937e5bac403bd667
|
|
BLAKE2b-256 checksum How to use checksums |
e6590d1b08b360b0789b025be0046a7694e15cad90f3064c6795d038a9c4a361
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.3
|