# FAQ

Common questions and use cases for Cntrl.

### [Why "Cntrl Bridge"?](/content/docs/faq#why-cntrl-bridge/index.html)

The name represents the core purpose of the app: giving you **Control** over your PC from anywhere in your home network. It's a bridge between your computer and whatever remote dashboard or mobile app you're using.

### [What are the main use cases?](/content/docs/faq#what-are-the-main-use-cases/index.html)

**Home Monitoring**: Check your PC stats (CPU Temp, GPU Load) while you're in the next room without having to walk back to your desk.

**Remote Power**: Turn off or hibernate your PC from your phone after you've finished a movie or when you realized you left it on.

**Dashboard Integration**: Cntrl provides raw JSON data, making it perfect for custom home automation dashboards built with Home Assistant, Dashy, or custom React apps.

### [Which platforms are supported?](/content/docs/faq#which-platforms-are-supported/index.html)

Cntrl Bridge supports both **Windows** and **macOS** (Intel and Apple Silicon). We are committed to maintaining feature parity where possible.

For a detailed breakdown of features per OS, check out the [Compatibility Matrix](/content/docs/compatibility/index.html).

### [Why Rust and Tauri?](/content/docs/faq#why-rust-and-tauri/index.html)

We chose **Rust** for its performance, safety, and ability to produce optimized binaries with minimal resource usage. Combined with **Tauri**, we get:

- **Lightweight**: ~20MB memory footprint vs 200-500MB for Electron apps  
- **Native Performance**: Rust backend is incredibly fast and efficient  
- **Small Binaries**: ~10-15MB installer vs 100MB+ for Electron  
- **Native UI**: Uses your system's WebView (Edge on Windows, Safari on macOS)  
- **Cross-Platform**: Same codebase for Windows and macOS with platform-specific optimizations

### [Is it safe to use over the internet?](/content/docs/faq#is-it-safe-to-use-over-the-internet/index.html)

LOCAL NETWORK ONLY

Cntrl Bridge is designed for **local network use**. It has **no** built-in encryption (HTTPS) and relies on simple API keys (if enabled).

We **do not recommend** exposing the Cntrl Bridge port (default `9990`) to the public internet via router port forwarding. Doing so would give anyone full control over your PC's power state, processes, and file system visibility.

If you need remote access away from home, we strongly recommend using a secure VPN like **Tailscale** or **WireGuard** to access your local network safely.

### [Project Status & Stability](/content/docs/faq#project-status--stability/index.html)

Public Alpha

Cntrl Bridge is currently in early development (v0.x). Features and API endpoints are subject to **breaking changes** without major version increments.

- **Updates**: Always check the [Release Notes](https://github.com/azaek/cntrl/releases) before updating.

### [Feature Questions](/content/docs/faq#feature-questions/index.html)

#### [Why can't I see CPU temperatures on Windows?](/content/docs/faq#why-cant-i-see-cpu-temperatures-on-windows/index.html)

Windows does not strictly expose CPU temperatures via standard APIs. Cntrl relies on WMI or OpenHardwareMonitor. If you don't use OHM, you might not see temp data.

#### [How do I kill a specific process?](/content/docs/faq#how-do-i-kill-a-specific-process/index.html)

You can use the `/api/processes/kill` endpoint with either a `pid` (for a specific instance) or `name` (to close all instances, e.g., "chrome.exe"). See the [Processes API](/content/docs/api/processes/index.html) for details.

### [Can I change the port?](/content/docs/faq#can-i-change-the-port/index.html)

Yes! You can change it by editing the `config.json` file manually. See the [Configuration Guide](/content/docs/config/index.html) for details.

### [Should I use WebSocket or SSE Stream?](/content/docs/faq#should-i-use-websocket-or-sse-stream/index.html)

| Feature | WebSocket (`/api/ws`) | SSE (`/api/stream`) |
| --- | --- | --- |
| Real-time data | ✅ | ✅ |
| Send commands | ✅ | ❌ |
| Topic subscriptions | ✅ | ❌ (field filtering only) |
| Operation feedback | ✅ | ❌ |
| Browser EventSource | ❌ | ✅ |

**TL;DR**: Use **WebSocket** if you need to send commands (media control, process management) or want granular subscriptions. Use **SSE** if you only need to display stats and want simpler browser integration.

### [Does WebSocket use CPU when idle?](/content/docs/faq#does-websocket-use-cpu-when-idle/index.html)

No! Cntrl uses **lazy loop spawning**. Monitoring loops only run when clients are subscribed:

- No WebSocket clients → Zero loops running → ~0% CPU
- Subscribe to "stats" → Stats loop starts
- Disconnect → Loop stops automatically

This means the server has zero overhead when you're not actively using real-time features.
