computer-use-linux 0.7.49

Native Linux desktop control over MCP and CLI: semantic AT-SPI accessibility trees, multi-compositor window targeting (GNOME, KDE/KWin, Hyprland, niri, COSMIC, i3, Sway, labwc and other wlroots compositors, X11), bounded screenshots, Wayland/X11 input, and an on-screen agent activity indicator.
Documentation
[package]
name = "computer-use-linux"
version = "0.7.49"
edition = "2021"
# File::try_lock, used by the indicator, is stable since Rust 1.89.
rust-version = "1.89"
license = "MIT"
description = "Native Linux desktop control over MCP and CLI: semantic AT-SPI accessibility trees, multi-compositor window targeting (GNOME, KDE/KWin, Hyprland, niri, COSMIC, i3, Sway, labwc and other wlroots compositors, X11), bounded screenshots, Wayland/X11 input, and an on-screen agent activity indicator."
repository = "https://github.com/agent-sh/computer-use-linux"
documentation = "https://docs.rs/computer-use-linux"
readme = "README.md"
keywords = ["mcp", "computer-use", "accessibility", "linux", "wayland"]
categories = ["accessibility", "command-line-utilities", "os::linux-apis"]
# Publish only what building and testing the crate reads, so files that are
# not part of the crate (the npm wrapper, Pi extension, plugins, CI config or
# a stray local file) never reach crates.io.
include = [
    "/src/**",
    "/tests/*.rs",
    "/tests/fixtures/keyboard-us-de.xkb",
    "/examples/*.rs",
    "/gnome-shell-extension/**",
    "/scripts/app_state_capture_order_test.py",
    "/scripts/cosmic_focus_test.py",
    "/scripts/gnome_indicator_test.py",
    "/scripts/hyprland_background_test.py",
    "/scripts/socket_fixture.py",
    "/Cargo.toml",
    "/Cargo.lock",
    "/README.md",
    "/CHANGELOG.md",
    "/LICENSE",
]

[[bin]]
name = "computer-use-linux"
path = "src/main.rs"

[[bin]]
name = "computer-use-linux-cosmic"
path = "src/bin/computer-use-linux-cosmic.rs"

[[bin]]
name = "computer-use-linux-indicator"
path = "src/bin/computer-use-linux-indicator/main.rs"

[dependencies]
mimalloc = { version = "0.1", default-features = false }
anyhow = "1.0.102"
# atspi without its "connection" feature: that feature pulls atspi-connection
# with default features, which include "p2p", and p2p peer enumeration during
# connect() calls GetInterfaces on every a11y-bus peer, so a single
# AppArmor-confined peer (e.g. snap-packaged Slack) aborts the whole
# AccessibilityConnection. We deliberately never use P2P routing (issue #31),
# so depend on atspi-connection directly with p2p off.
atspi = { version = "0.29.0", default-features = false, features = ["proxies", "wrappers", "tokio"] }
atspi-connection = { version = "0.13.0", default-features = false, features = ["wrappers"] }
base64 = "0.22.1"
evdev = "0.13.2"
cosmic-protocols = { version = "0.2.0", default-features = false, features = ["client"] }
futures-util = "0.3.32"
getrandom = "0.4.2"
image = { version = "0.25", default-features = false, features = ["jpeg", "png"] }
libc = "0.2"
reis = { version = "0.7.1", features = ["tokio"] }
rmcp = { version = "3.5.1", features = ["transport-io"] }
schemars = "1.0"
serde = { version = "1.0.228", features = ["derive"] }
serde_json = "1.0.149"
sha2 = "0.11.0"
skrifa = { version = "0.42", default-features = false, features = ["std"] }
# The indicator overlay: layer-shell surfaces drawn on the CPU into shm buffers.
smithay-client-toolkit = { version = "0.21.1", default-features = false, features = ["calloop"] }
tiny-skia = { version = "0.12.0", default-features = false, features = ["std", "simd"] }
tokio = { version = "1.53.3", features = ["io-util", "macros", "net", "process", "rt", "signal", "sync", "time"] }
wayland-client = "0.31.11"
wayland-protocols = { version = "0.32.9", features = ["client", "staging"] }
wayland-protocols-wlr = { version = "0.3.12", features = ["client"] }
# Pure-Rust X11 client (no libxcb). Native X11 sessions only: absolute window
# origins for the EWMH backend (wmctrl -lG counts the frame offset twice, #157).
x11rb = { version = "0.14", features = ["xkb"] }
xkbcommon-dl = "0.4.2"
xkeysym = "0.2.1"
zbus = "5.14.0"
zbus_xml = "5.1.1"

[profile.dev]
# Keep file and line numbers in backtraces without full variable/type debug info.
debug = "line-tables-only"

[profile.release]
codegen-units = 1
opt-level = 3
lto = "fat"
strip = "symbols"