Simple Cross-Chain Token Transfers Powered by CCIP
Project description
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
Project details
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 ccip-terminal-0.1.0.tar.gz.
File metadata
- Download URL: ccip-terminal-0.1.0.tar.gz
- Upload date:
- Size: 26.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b7cec8574d7f470a95e52077c4b7bf11a3fb114b33613cd141002a027e2b9042
|
|
| MD5 |
3e01490fd306124a8d8249d78a73a30e
|
|
| BLAKE2b-256 |
ba2b939e72cb47ffc36008054a5ac6d82db16e2998aa4b3724f65db40165ce9f
|
File details
Details for the file ccip_terminal-0.1.0-py3-none-any.whl.
File metadata
- Download URL: ccip_terminal-0.1.0-py3-none-any.whl
- Upload date:
- Size: 29.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
65b7240065d7b014f8134d482276732469840e0ec53563629c0829da8dcfb471
|
|
| MD5 |
33aa6bc98667afcbc39bdf14c01fc5f6
|
|
| BLAKE2b-256 |
c40c47cad5c118ac2c741350e9250e7e23ed037c5c1cbaccc6d41d48f804513c
|