App de system tray para Windows que muestra los puertos abiertos en localhost y te permite matar los procesos al instante.
Durante desarrollo es común tener puertos ocupados por procesos zombie o servidores que olvidaste cerrar. En vez de abrir PowerShell, correr netstat, buscar el PID y hacer taskkill, PortKill lo resuelve en un click desde la bandeja del sistema.
- System tray: vive al lado del reloj/wifi, sin ocupar espacio en la taskbar
- Lista de puertos: muestra todos los puertos TCP en estado LISTENING
- Kill instantáneo: mata cualquier proceso con un click
- Auto-refresh: actualiza la lista cada 3 segundos
- Filtro: busca por número de puerto o nombre de proceso
- Dark theme: Catppuccin Mocha, consistente con Windows 11 dark mode
- Liviano: ~5MB de instalador
┌─────────────────────────────────────┐
│ ⚡ PortKill ✕ │
├─────────────────────────────────────┤
│ 🔍 Filtrar puerto o proceso... │
├─────────────────────────────────────┤
│ PUERTO PID PROCESO ACCION │
│ 3000 12345 node.exe [Kill] │
│ 3800 23456 bun.exe [Kill] │
│ 5432 34567 postgres [Kill] │
│ 8080 45678 java.exe [Kill] │
├─────────────────────────────────────┤
│ 4 puertos activos · Auto ↻ 3s │
└─────────────────────────────────────┘
Descarga el .msi o .exe de la ultima Release.
- Descarga
PortKill_0.1.0_x64-setup.exeoPortKill_0.1.0_x64_en-US.msi - Ejecuta el instalador
- PortKill aparece en la bandeja del sistema
| Accion | Como |
|---|---|
| Abrir lista de puertos | Click izquierdo en el icono del tray |
| Cerrar popup | Click izquierdo de nuevo o boton X |
| Matar un proceso | Click en el boton Kill rojo |
| Filtrar | Escribe en el campo de busqueda |
| Salir de la app | Click derecho en el tray → "Salir" |
# Clonar el repo
git clone https://github.com/chrlss11/portkill.git
cd portkill
# Instalar dependencias del frontend
bun install
# Desarrollo (hot reload)
bun run tauri dev
# Build para produccion
bun run tauri buildEl instalador queda en src-tauri/target/release/bundle/.
El proyecto usa GitHub Actions para compilar y crear releases automaticamente.
- Pusheas un tag con formato
v*(ej:v0.1.0) - GitHub Actions ejecuta el workflow en un runner
windows-latest - Compila el frontend (Svelte) y el backend (Rust/Tauri)
- Crea un GitHub Release con los instaladores
.exey.msiadjuntos
git tag v0.1.0
git push origin v0.1.0El workflow se activa automaticamente. Puedes ver el progreso en la tab Actions del repo.
El archivo .github/workflows/release.yml configura:
- Trigger: push de tags
v* - Runner:
windows-latest - Steps: checkout → Node 22 → Bun → Rust stable → cache de Rust →
bun install→tauri-action(build + release) - Permisos:
contents: writepara crear el release
No necesitas configurar secrets adicionales. El
GITHUB_TOKENque provee GitHub Actions ya tiene los permisos necesarios.
| Capa | Tecnologia |
|---|---|
| Frontend | Svelte 5 + TypeScript |
| Backend | Rust |
| Framework | Tauri v2 |
| Build tool | Vite |
| Package manager | Bun |
| CI/CD | GitHub Actions |
| Estilo | Catppuccin Mocha |
portkill/
├── src/ # Frontend (Svelte)
│ ├── App.svelte # UI principal: lista + kill buttons
│ ├── main.ts # Entry point de Svelte
│ ├── app.css # Dark theme
│ └── lib/types.ts # Interfaces TypeScript
├── src-tauri/ # Backend (Rust)
│ ├── src/lib.rs # Comandos: list_ports, kill_port
│ ├── src/main.rs # Entry point + tray setup
│ ├── tauri.conf.json # Config de Tauri
│ ├── capabilities/ # Permisos Tauri v2
│ └── icons/ # Iconos de la app
├── .github/workflows/ # CI/CD
├── index.html # Entry HTML para Vite
├── package.json
├── vite.config.ts
└── svelte.config.js
-
list_ports(Rust): ejecutanetstat -ano -p tcp, parsea las lineas con estadoLISTENING, luego resuelve nombres de proceso contasklist /FO CSV /NH. Retorna la lista al frontend via IPC de Tauri. -
kill_port(Rust): ejecutataskkill /PID {pid} /Fpara matar el proceso. Protege contra PIDs del sistema (0, 4). -
System tray (Rust/Tauri): click izquierdo toggle show/hide del popup. Click derecho muestra menu contextual.
-
Frontend (Svelte): llama
list_portscada 3 segundos, filtra reactivamente, y muestra animacion de fade-out al matar un proceso.