✈ Wireless file transfer between PC and Phone via QR code — no cables, no accounts.
Project description
██████╗ ██████╗ ██████╗ ███████╗ █████╗ ██╗██████╗
██╔════╝██╔═══██╗██╔══██╗██╔════╝██╔══██╗██║██╔══██╗
██║ ██║ ██║██║ ██║█████╗ ███████║██║██████╔╝
██║ ██║ ██║██║ ██║██╔══╝ ██╔══██║██║██╔══██╗
╚██████╗╚██████╔╝██████╔╝███████╗██║ ██║██║██║ ██║
╚═════╝ ╚═════╝ ╚═════╝ ╚══════╝╚═╝ ╚═╝╚═╝╚═╝ ╚═╝
Wireless file transfer between your PC and Phone — via QR code.
No cables. No accounts. No cloud. Just scan and go.
✈ What is CodeAir?
CodeAir turns your terminal into a file transfer station.
Run it, scan the QR code with your phone — done.
- Push files from PC → Phone (over the internet via public URL)
- Pull files from Phone → PC (lands straight on your Desktop)
- No sign-up, no config, no third-party apps
- Works anywhere in the world via
localhost.runSSH tunnel
⚡ Install
pip install codeair
That's it. qrcode is included automatically.
🚀 Usage
import codeair
codeair()
A menu appears:
╔══════════════════════════════════════════╗
║ ✈ C O D E A I R v1.0.0 ║
║ Wireless File Transfer ║
╠══════════════════════════════════════════╣
║ [1] Push → PC / Laptop ─▶ Phone ║
║ [2] Pull ← Phone ─▶ PC / Laptop ║
║ [3] Exit ║
╚══════════════════════════════════════════╝
📤 Push — PC → Phone
Send anything from your PC to any phone, anywhere in the world.
| Option | What it does |
|---|---|
[1] Current .py file |
Auto-detects and serves the script you're running |
[2] Custom text |
Type/paste text → phone downloads as .txt |
[3] Send by path |
Type any file or folder path → served instantly |
[4] Whole project |
Recursively zips your entire project (skips .venv, __pycache__, .git) |
Password protection:
from codeair import push
push(password="secret123")
# Phone must enter the password before the download button appears
How it works:
- A local HTTP server starts on your machine
- An SSH tunnel via
localhost.rungives you a public HTTPS URL - A QR code prints in your terminal
- Phone scans it → download page opens in browser
- Press
ENTER→ server shuts down, QR expires instantly
No same Wi-Fi required. Send to anyone, anywhere.
📥 Pull — Phone → PC
Receive any file from a phone directly to your Desktop.
Scan with your phone camera → tap Choose File → Send
| Received file type | What happens |
|---|---|
.py .txt .md etc. |
Printed live in terminal + option to save |
.zip |
Auto-extracted into a folder on Desktop |
| Images, PDFs, anything else | Saved directly to ~/Desktop/ |
🌐 Public Tunnel
CodeAir uses localhost.run — a free, zero-signup SSH tunnel:
ssh -R 80:localhost:<port> nokey@localhost.run
This gives you a live public URL like:
https://a3f91bc04d2e.lhr.life
Which you can screenshot, share via chat, or print as a QR — and your friend scans it from their phone anywhere in the world.
If the tunnel fails (no internet / SSH unavailable), CodeAir automatically falls back to your local LAN IP so it still works on the same Wi-Fi.
🗂 Project Structure
codeair/
├── codeair/
│ ├── __init__.py ← callable module (import codeair; codeair())
│ ├── push.py ← PC → Phone logic
│ ├── pull.py ← Phone → PC logic
│ ├── tunnel.py ← localhost.run SSH tunnel
│ └── utils.py ← QR, LAN IP, file helpers
├── main.py
├── setup.py
└── README.md
📋 Requirements
- Python 3.10+
qrcode(auto-installed with pip)sshon your system (pre-installed on macOS and Linux; Windows: use Git Bash or WSL)- For public links: internet connection
🔒 Security
- Password protection available on every push
- Tunnel closes the moment you press
ENTER— URL is dead instantly - Files are never stored on any server — direct stream from your machine
- No account, no data retained by any third party
💡 Tips
# Use directly without the menu
from codeair import push, pull
push() # guided wizard
push(password="hello") # password-protected
pull() # wait for phone upload
# Or just run main.py
python main.py
✈ CodeAir
An Independent Project By Didar Singh
Scan. Transfer. Done.
Project details
Release history Release notifications | RSS feed
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 codeair-1.0.0.tar.gz.
File metadata
- Download URL: codeair-1.0.0.tar.gz
- Upload date:
- Size: 18.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c514d197239dfc49db91f6714413f8d0e29738bcc1e5dac74e9eb49c726b3f49
|
|
| MD5 |
c86511222c2204471458e384819490e6
|
|
| BLAKE2b-256 |
3dd5409e54b6025bd188a3a069c9446a850ae6ee813f305c803b85338c7635a9
|
File details
Details for the file codeair-1.0.0-py3-none-any.whl.
File metadata
- Download URL: codeair-1.0.0-py3-none-any.whl
- Upload date:
- Size: 18.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ded5beeb694bf3131a0340d9a9d5448a071220a846336e675b61122e6332466a
|
|
| MD5 |
35a4899532ef38052753f152b201d9c9
|
|
| BLAKE2b-256 |
f1b56bb9b22a3daa26250706afdf03cea8a05be0f9f8762b82eefa9ccd558c72
|