Work on your Linux servers from localhost.
Newport is a desktop app for macOS and Windows that connects to your Linux servers over SSH. Open web apps running on the server at localhost. Copy on your computer and paste on the server. Links from the server open in your browser.
@@ -24,7 +24,7 @@ export function SettingsForm({ user }) return (- <form className="settings">+ <form className="settings pad-for-save-bar"> <ProfileFields user={user} /> <SaveBar /> </form>
9e3f1c2Lin Chen · now4c1e9a2Sam Okafor · 2 days agoe81b07fLin Chen · 3 days ago2d94c10Sam Okafor · 3 days agodeveloper@aws-dev:~/your-awesome-app$ git pullAlready up to date.developer@aws-dev:~/your-awesome-app$ npm run dev > your-awesome-app@0.4.2 dev> vite --port 3000 VITE v5.4.10 ready in 412 ms ➜ Local: http://localhost:3000/ ➜ Network: use --host to expose ➜ press h + enter to show helpdeveloper@aws-dev:~/your-awesome-app$ claude✻ Welcome to Claude Code! /help for help, /status for your current setup cwd: /home/developer/your-awesome-app> [Image #1] The save bar covers the Time zone field. Fix it. ⏺︎ The sticky save bar sits over the last field. I'll pad the form by the bar's height. ⏺︎ Update(src/settings/SettingsForm.tsx) ⎿ Updated src/settings/SettingsForm.tsx with 1 addition and 1 removal> > [Image #1] The save bar covers the Time zone field. Fix it.> ? for shortcutsdeveloper@aws-dev:~/your-awesome-app$ npx wrangler login wrangler 4.43.0───────────────────Attempting to login via OAuth...Opening a link in your default browser: https://dash.cloudflare.com/oauth2/auth?response_type=code&client_id=54d11594-84e4…Successfully logged in.developer@aws-dev:~/your-awesome-app$
Port forwarding. ⌘-click a localhost URL in the terminal. Newport forwards the port and opens it in your browser.Clipboard sync. Take a screenshot and paste it into Claude Code on the server.Browser links. When a program on the server opens a link, like a sign-in page, it opens in your browser.Projects. Edit, review, commit and push code on the server.Linux desktop apps. Graphical apps like Chrome run on the server, each in its own window on your Mac. Newport Pro, macOS only for now.
Fewer SSH commands.
What you type today, and what you do in Newport instead.
- 1041
ssh -N -L 3000:localhost:3000 aws-dev⌘-click the URLNewport forwards the port
- 1042
ssh -N -L 5432:localhost:5432 aws-devTurn on a switchor keep it always on
- 1043
scp ~/Desktop/Screenshot.png aws-dev:/tmp/Paste with Ctrl+Vyour clipboard is synced
- 1044
ssh -L 8976:localhost:8976 aws-devClick the sign-in linkit opens in your browser
- 1045
ssh aws-dev journalctl -u metrics-exporter -fOpen Serviceslive logs, start, stop, restart
Port forwarding.
Newport finds the ports in use on the server. Click a URL in the terminal or turn on a switch, and the port opens on localhost. Keep it always on, and it reconnects by itself.
- Finds your portsNewport lists the ports in use, grouped by project.
- One clickClick a localhost URL in the terminal, or turn on a switch.
- Stays onKeep a port always on and it reconnects by itself.
- Both waysLet the server reach an app on your computer, too.
Clipboard sync.
Copy on your computer. Paste on the server. Screenshots paste straight into Claude Code, Codex and OpenCode.
> [Image #1] The save bar covers the last field. Fix it.- ScreenshotsPaste images into Claude Code, Codex and OpenCode.
- Copy backCopy text from the terminal, even inside tmux.
- Your choiceOff for every server until you turn it on.
Browser links.
Links from the server open in your browser.
❯ npx wrangler login
wrangler 4.43.0
───────────────────
Attempting to login via OAuth...
Opening a link in your default browser:
https://dash.cloudflare.com/oauth2/auth?response_type=code&client_id=54d1…
Successfully logged in.
~/your-awesome-app on feature/settings
❯
Wrangler is requesting access to your account.
- Workers scripts: read and edit
- Account settings: read
- Offline access
Signed in as lin@your-awesome-app.dev
- Sign-ins finishLogins like wrangler login complete on the server.
- Any commandCommands that open a link use your browser.
- Your choiceOff for every server until you turn it on.
Terminals.
Shells on your server, in tabs.
~/your-awesome-app on feature/settingswith developer@aws-dev at 10:41:52
❯ npm run dev
> your-awesome-app@0.4.2 dev
> vite --port 3000
VITE v5.4.10 ready in 412 ms
➜ Local: http://localhost:3000/
➜ Network: use --host to expose
➜ press h + enter to show help
10:41:58 AM [vite] page reload src/settings/SettingsForm.tsx
10:42:13 AM [vite] hmr update /src/settings/SaveBar.tsx
- TabsOpen, rename and reconnect as many as you need.
- SearchFind text in the output.
- Your keysKeys like Ctrl+F go to the program you're running.
Files.
Browse your server's files.
Home
Server root
Name ↑Size
ProfileFields.tsx2.1 KB
SaveBar.tsx1.4 KB
SettingsForm.tsx612 B
settings.css3.8 KB
time-zones.json18 KB
save-bar-bug.png214 KB
SettingsForm.tsx
1import { ProfileFields } from "./ProfileFields";
2import { SaveBar } from "./SaveBar";
3
4export function SettingsForm({ user }) {
5 return (
6 <form className="settings">
7 <ProfileFields user={user} />
8 <SaveBar />
9 </form>
10 );
11}
612 B · Permissions 644Copy textWrap lines
SettingsForm.tsx · 612 B · Modified today at 10:41 AM · Permissions 644
- PreviewCode with highlighting, images and PDFs.
- Upload and downloadWith progress, and nothing is overwritten by accident.
- FindFilter by name and show hidden files.
Code editor.
Edit the code that lives on your server.
Explorer
.vscode
node_modules
public
src
auth
dashboard
settings
TSProfileFields.tsx
TSSaveBar.tsx
TSSettingsForm.tsx
{}package.json
src/settings/SettingsForm.tsxtypescript-language-serverUTF-8 · LF
1import { ProfileFields } from "./ProfileFields";
2import { SaveBar } from "./SaveBar";
3
4export function SettingsForm({ user }: Props) {
5 return (
6 <form className="settings pad-for-save-bar">
7 <ProfileFields user={user} zone={user.ti} />
8 <SaveBar />
9 </form>
10 );
11}
PtimeZonestring
PtimeFormat"12h" | "24h"
Ptitlestring | undefined
- Your code stays putFiles are edited and saved on the server.
- Code toolsCompletion, errors, rename and format for Rust, TypeScript, Python and Go.
- Your settingsReads the language settings in .vscode and .zed.
Git.
Review, commit and push without leaving Newport.
ChangesHistory
Find a changed file
Staged 1
MSettingsForm.tsx src/settings
Changed 1
MSaveBar.tsx src/settings
fix(settings): keep the last field above the save bar
Pad the form by the save bar's height so the Time zone field stays visible.
Commit 1 file to feature/settings
src/settings/SettingsForm.tsx +1 −1
@@ -3,7 +3,7 @@
33
44export function SettingsForm({ user }) {
55 return (
6− <form className="settings">
6+ <form className="settings pad-for-save-bar">
77 <ProfileFields user={user} />
88 <SaveBar />
99 </form>
- ReviewSee every change before you commit.
- Commit and pushStage, commit, pull and push from the same window.
- HistoryLook through earlier commits and their diffs.
Services.
See and control the services on your server.
Services 4
nginxsystemup 3d
metrics-exportersystemfailed
postgresqlsystemup 3d
awesome-workeruserup 2h
Timers 2
◷backupin 5h 12m
◷certbot-renewin 1d 3h
103 system services · Show all
metrics-exporter.service system service
Prometheus metrics exporter
Failed 2 min ago · exit status 1 · runs as metrics
CPU—
Memory—
Start at bootEnabled
10:41:02 AM metrics-exporter[2231]: listening on :9100
10:41:07 AM metrics-exporter[2231]: open /var/lib/metrics/state.db: permission denied
10:41:07 AM systemd[1]: metrics-exporter.service: Main process exited, status=1/FAILURE
10:41:07 AM systemd[1]: metrics-exporter.service: Failed with result 'exit-code'.
- Spot problemsFailed services stand out.
- Live logsFollow and search a service's logs.
- ControlStart, stop, restart, and choose what starts at boot.
Containers.
Manage Docker on your server.
your-awesome-app Compose
webup 2h
dbup 3d
cacheup 3d
Other
adminerexited
web your-awesome-app-web:latest
Running up 2 hours · healthy
CPU3.2%
Memory182 MiB
Network48 KiB/s
10:42:11 GET /settings 200 18ms
10:42:12 GET /assets/settings.css 200 3ms
10:42:15 POST /api/profile 204 41ms
- InspectState, resource use, logs and a shell inside.
- ComposeBring projects up and recreate services.
- Open in your browserForward a container's port to your computer.
Server monitoring.
See how your server is doing.
23%
4 cores64%
5.0 GiB of 7.8 GiB41%
of 4 cores · load 1.642.4MB/s
↓ in · ↑ out 310 KiB/sCPU · last 24hLast reading 10:42:13
12:0018:0000:0006:0010:42
/48% · 41.2 GiB free of 80 GiB
/var/lib/docker71% · 29.0 GiB free of 100 GiB
- At a glanceCPU, memory, load, network and disk.
- HistoryLook back up to 7 days.
- PrivateHistory is kept on your computer.
Seamless remote control. Pro
Apps like Chrome, DBeaver and GIMP run on the server. Each one opens in its own window on your computer.
- Its own windowEach app opens in its own window, next to your other apps.
- From the launcher or the terminalPick an app on the Apps page, or type its name in a Newport terminal.
- Sound and pasteApps play audio on your computer, and you can paste into them from your computer.
Pricing.
Newport is free. Pro adds Linux desktop apps in their own windows.
Open Source
- Port forwarding, clipboard sync and browser links
- Terminals, files, Git, services and containers
- Unlimited Linux hosts
Pro
- Everything in Open Source
- Linux desktop apps in their own windows, on macOS
- Up to 5 Newport installs at a time
14-day free trial, no card needed. 30-day money-back guarantee.
Questions about Newport.
- What is Newport?
- A free, open-source desktop app for working on Linux servers over SSH. Port forwarding, clipboard sync, terminals, files, Git, services and containers, all in one app.
- Which computers can run Newport?
- Macs with Apple silicon on macOS 14 or later. Intel Macs aren't supported. Windows works too, but it is experimental and not code-signed yet. A Linux version is coming.
- What does Newport install on the server?
- A small helper called Needle, in your home folder. Newport asks before installing it, keeps it updated, and it never needs root. Terminals, files and ports you forward yourself work without it; the other tools need it.
- Is a forwarded port open to my network?
- No. Only your own computer can reach a forwarded port.
- Who can read my clipboard?
- Clipboard sync is off for every server until you turn it on. When it's on, programs on that server can read what you copy, including passwords, while Newport is connected. Turn it on only for servers you trust.
- Where are my passwords stored?
- On your computer, encrypted. The key is kept in the macOS Keychain or Windows Credential Manager. Your SSH keys stay where they are.
- Which servers work?
- Linux servers you can reach directly over SSH, with a key, an SSH agent or a password. Newport can import your hosts from ~/.ssh/config. Servers behind a jump host, and logins that ask for a one-time code, aren't supported yet.
- Is it free?
- Yes. Newport is free and open source under the MIT license. Newport Pro adds Linux desktop apps in their own windows for $39.99 a year.
- Do I need an account?
- No. You only sign in to start the free trial or use Newport Pro.
- Can I keep using my own terminal and editor?
- Yes. Newport works alongside them. Only clicking a localhost URL to forward it needs Newport's terminal.
- Can Newport run Linux desktop apps from the server?
- Yes, with Newport Pro on macOS. Windows support is coming. The apps run on the server and open in their own windows on your Mac.
Download Newport.
Free for unlimited Linux hosts.
Version 0.6.1Read release notes
Open this page on your computer to download.
Linux
Coming soon