Phone ↔ PC file transfer from the terminal. Run npx chegou, scan the QR, done.
JavaScript
19
56 commits
updated Oct 11, 2026
English · Português
move files between your phone and your PC over the local network. one command, one QR code, done.
› receive photos, videos and files from your phone, straight into a PC folder
› send files, text and links from your PC to your phone
› camera take a photo or record a video and it lands on your PC
› drop drop a file or folder on the terminal and it shows up on the phone
› safe a token inside the QR: only whoever scanned it gets in
› disposable nothing to install on the phone, nothing running after ctrl+c
chegou (sheh-GOH) is Portuguese for "it arrived".

npx chegou on your PCno app, no account, no internet. both devices just need to be on the same network.
without installing anything:
npx chegou
or for good:
npm install -g chegou
requires Node.js 20 or newer.
chegou # open and wait for files from your phone
chegou photo.png video.mp4 # make these files ready to download on the phone
chegou ./photos # every file in a folder
chegou https://youtube.com # send a link or some text to the phone
chegou --timeout 10 # shut down after 10 min without use
chegou --relay # use the tunnel: works from any network
chegou --local # use the local network without asking
chegou --lang pt # terminal in Portuguese
when it starts, chegou asks how your phone will connect (arrow keys + Enter, or 1/2):
how will your phone connect?
› 1 local same wi-fi · faster · no size limit
2 tunnel any network · via Cloudflare · up to 100 MB per file
pass --local or --relay to skip the question.
while chegou is running, drop files or folders on the terminal window or type some text/a link and press Enter: the phone gets it right away.
| option | short | what it does | default |
|---|---|---|---|
--relay | -r | use the Cloudflare tunnel, works from any network (or --tunnel) | ask |
--local | -l | use the local network, don't ask | ask |
--port <number> | -p | preferred port (if it's busy, the next free one is used) | 8080 |
--dir <path> | -d | where to save what comes from the phone | ~/Downloads/chegou |
--timeout <min> | -t | shut down after X minutes without use (0.5 = 30 s) | off |
--lang <language> | terminal language (en, pt) | system's | |
--help | -h | show the help |
| local network | tunnel | |
|---|---|---|
| when | PC and phone on the same wi-fi | different networks, mobile data, campus/café wi-fi |
| speed | your network's (fast) | depends on both internet connections |
| limit | none | 100 MB per file (Cloudflare's limit) |
| path | only your network | Cloudflare's servers, over HTTPS |
the tunnel uses Cloudflare Quick Tunnels (free, no account). the first time, chegou downloads cloudflared (~30 MB); after that it opens instantly. the address is random and the token is longer, since the url is public.
on the PC
on the phone: start, add menu, sending and done
401../../) and nothing is overwritten: photo.jpg becomes photo (1).jpg--timeout, the server shuts itself down if you forget it openLocalSend is great and more complete (encryption, works between any devices). chegou is different in how you use it:
npx chegou, send what you need, ctrl+c. nothing keeps running in the backgroundif you move files between your own devices every day, LocalSend is probably the better pick. chegou is for "I need this file over there now, and I'm already in the terminal".
npx?being careful is healthy: running random npm packages is a real risk. that's why chegou is small and open: a handful of files in bin/, src/ and public/, readable in a few minutes. the only dependencies are fastify (and official plugins), picocolors, qrcode-terminal and untun (for the tunnel).
what it does on your PC: opens a port on the local network while it runs and writes files only to the folder you choose. it installs nothing and doesn't run in the background. it only reaches the internet if you pick the tunnel.
prefer running it from source:
git clone https://github.com/zrdep/chegou
cd chegou && npm install && node bin/chegou.js
ipconfigpublic networks usually isolate devices from each other (AP isolation). use the tunnel for that:
chegou --relay
or pick tunnel when chegou asks. it creates a public address through Cloudflare, so it works even with the PC on campus wi-fi and the phone on mobile data. the limit is 100 MB per file.
chegou speaks English and Portuguese. the terminal follows your system language and the phone page follows the phone's, each on its own. to force one: --lang en in the terminal or ?lang=en in the phone's url.
want to add a language? it's two files:
src/i18n/en.js → terminal texts
public/i18n/en.js → phone page texts
copy both using the language code (e.g. es.js), translate, register them in src/i18n/index.js and public/index.html, and open a PR.
bin/chegou.js command entry point
src/
main.js the flow: options → network → server → tunnel → banner
config.js fixed numbers (port, limits, token size)
cli/ everything terminal: options, question, banner, --timeout
server/ server: upload, download, sharing, token
net/ network: IP, free port, Cloudflare tunnel
i18n/ terminal texts (en, pt)
public/
index.html, app.js the phone page
i18n/ page texts (en, pt)
node.js · fastify · plain html/css/js
made by Pedro Randolfo · MIT
if it helped you, leave a ⭐
Phone ↔ PC file transfer from the terminal. Run npx chegou, scan the QR, done.
JavaScript
19
56 commits
updated Oct 11, 2026
English · Português
move files between your phone and your PC over the local network. one command, one QR code, done.
› receive photos, videos and files from your phone, straight into a PC folder
› send files, text and links from your PC to your phone
› camera take a photo or record a video and it lands on your PC
› drop drop a file or folder on the terminal and it shows up on the phone
› safe a token inside the QR: only whoever scanned it gets in
› disposable nothing to install on the phone, nothing running after ctrl+c
chegou (sheh-GOH) is Portuguese for "it arrived".

npx chegou on your PCno app, no account, no internet. both devices just need to be on the same network.
without installing anything:
npx chegou
or for good:
npm install -g chegou
requires Node.js 20 or newer.
chegou # open and wait for files from your phone
chegou photo.png video.mp4 # make these files ready to download on the phone
chegou ./photos # every file in a folder
chegou https://youtube.com # send a link or some text to the phone
chegou --timeout 10 # shut down after 10 min without use
chegou --relay # use the tunnel: works from any network
chegou --local # use the local network without asking
chegou --lang pt # terminal in Portuguese
when it starts, chegou asks how your phone will connect (arrow keys + Enter, or 1/2):
how will your phone connect?
› 1 local same wi-fi · faster · no size limit
2 tunnel any network · via Cloudflare · up to 100 MB per file
pass --local or --relay to skip the question.
while chegou is running, drop files or folders on the terminal window or type some text/a link and press Enter: the phone gets it right away.
| option | short | what it does | default |
|---|---|---|---|
--relay | -r | use the Cloudflare tunnel, works from any network (or --tunnel) | ask |
--local | -l | use the local network, don't ask | ask |
--port <number> | -p | preferred port (if it's busy, the next free one is used) | 8080 |
--dir <path> | -d | where to save what comes from the phone | ~/Downloads/chegou |
--timeout <min> | -t | shut down after X minutes without use (0.5 = 30 s) | off |
--lang <language> | terminal language (en, pt) | system's | |
--help | -h | show the help |
| local network | tunnel | |
|---|---|---|
| when | PC and phone on the same wi-fi | different networks, mobile data, campus/café wi-fi |
| speed | your network's (fast) | depends on both internet connections |
| limit | none | 100 MB per file (Cloudflare's limit) |
| path | only your network | Cloudflare's servers, over HTTPS |
the tunnel uses Cloudflare Quick Tunnels (free, no account). the first time, chegou downloads cloudflared (~30 MB); after that it opens instantly. the address is random and the token is longer, since the url is public.
on the PC
on the phone: start, add menu, sending and done
401../../) and nothing is overwritten: photo.jpg becomes photo (1).jpg--timeout, the server shuts itself down if you forget it openLocalSend is great and more complete (encryption, works between any devices). chegou is different in how you use it:
npx chegou, send what you need, ctrl+c. nothing keeps running in the backgroundif you move files between your own devices every day, LocalSend is probably the better pick. chegou is for "I need this file over there now, and I'm already in the terminal".
npx?being careful is healthy: running random npm packages is a real risk. that's why chegou is small and open: a handful of files in bin/, src/ and public/, readable in a few minutes. the only dependencies are fastify (and official plugins), picocolors, qrcode-terminal and untun (for the tunnel).
what it does on your PC: opens a port on the local network while it runs and writes files only to the folder you choose. it installs nothing and doesn't run in the background. it only reaches the internet if you pick the tunnel.
prefer running it from source:
git clone https://github.com/zrdep/chegou
cd chegou && npm install && node bin/chegou.js
ipconfigpublic networks usually isolate devices from each other (AP isolation). use the tunnel for that:
chegou --relay
or pick tunnel when chegou asks. it creates a public address through Cloudflare, so it works even with the PC on campus wi-fi and the phone on mobile data. the limit is 100 MB per file.
chegou speaks English and Portuguese. the terminal follows your system language and the phone page follows the phone's, each on its own. to force one: --lang en in the terminal or ?lang=en in the phone's url.
want to add a language? it's two files:
src/i18n/en.js → terminal texts
public/i18n/en.js → phone page texts
copy both using the language code (e.g. es.js), translate, register them in src/i18n/index.js and public/index.html, and open a PR.
bin/chegou.js command entry point
src/
main.js the flow: options → network → server → tunnel → banner
config.js fixed numbers (port, limits, token size)
cli/ everything terminal: options, question, banner, --timeout
server/ server: upload, download, sharing, token
net/ network: IP, free port, Cloudflare tunnel
i18n/ terminal texts (en, pt)
public/
index.html, app.js the phone page
i18n/ page texts (en, pt)
node.js · fastify · plain html/css/js
made by Pedro Randolfo · MIT
if it helped you, leave a ⭐