| Crates.io | mi6-client |
| lib.rs | mi6-client |
| version | 0.2.8 |
| created_at | 2026-01-08 19:33:10.357156+00 |
| updated_at | 2026-01-24 19:03:35.104858+00 |
| description | Client library for mi6 - session monitoring, terminal focus, and process management |
| homepage | |
| repository | https://github.com/paradigmxyz/mi6 |
| max_upload_size | |
| id | 2030940 |
| size | 212,698 |
Client library for mi6 - session monitoring, terminal focus, and process management.
use mi6_client::{SessionMonitor, SessionState, focus_session};
// Create a session monitor using the builder pattern
let mut monitor = SessionMonitor::builder().build()?;
// Get all sessions with CPU/memory/git info
let sessions: Vec<SessionState> = monitor.get_sessions()?;
for session in &sessions {
println!("{}: {} CPU, {} MB",
session.session.session_id,
session.os.cpu_percent.unwrap_or(0.0),
session.os.memory_bytes / 1_000_000
);
}
// Focus a session's terminal window
if let Some(session) = sessions.first() {
if let Some(pid) = session.session.pid {
focus_session(pid, session.os.tty.as_deref())?;
}
}
For faster startup (useful for TUIs):
use mi6_client::SessionMonitor;
// Skip initial system refresh - CPU/memory will be 0 until first refresh
let monitor = SessionMonitor::builder()
.skip_initial_refresh()
.build()?;
For testing or alternative storage backends:
use mi6_client::SessionMonitor;
use std::sync::Arc;
// Inject mock storage for testing
let mock_storage: Arc<dyn Storage> = Arc::new(MockStorage::new());
let monitor = SessionMonitor::builder()
.storage(mock_storage)
.build()?;
| Terminal | Focus | Kill |
|---|---|---|
| iTerm2 | ✅ AppleScript | ✅ AppleScript |
| Terminal.app | ✅ AppleScript | ✅ AppleScript |
| tmux | ✅ tmux CLI | ✅ tmux kill-pane |
| WezTerm | ✅ wezterm CLI | ❌ |
| Kitty | ✅ kitty @ CLI | ❌ |
| Other (macOS) | ✅ App activation | ❌ |
| Other (Linux) | ✅ wmctrl/xdotool | ❌ |