[package] name = "oxi" version = "1.39.0" edition = "2024" # Floor set by the strictest dependency (egui 0.35 requires 1.92). rust-version = "1.92" description = "Standalone coding agent chat UI (Rust + egui; OpenAI-compatible LLMs + local tools)" license = "MIT" repository = "https://github.com/maziluiosif/oxi" readme = "README.md" keywords = ["gui", "llm", "coding-agent", "egui", "chat"] categories = ["development-tools", "gui"] [dependencies] eframe = { version = "0.35", default-features = false, features = ["accesskit", "wayland", "wgpu", "x11"] } egui = { version = "0.35", default-features = false } unicode-segmentation = "1.13" egui_extras = { version = "0.35", features = ["all_loaders", "syntect"] } syntect = { version = "5.3", default-features = false, features = ["default-fancy"] } tree-sitter = "0.27.0" tree-sitter-rust = "0.24.2" tree-sitter-python = "0.25.0" tree-sitter-javascript = "0.25.0" tree-sitter-typescript = "0.23.2" tree-sitter-json = "0.24.8" tree-sitter-toml-ng = "0.7.0" tree-sitter-yaml = "0.7.2" tree-sitter-html = "0.23.2" tree-sitter-css = "0.25.0" tree-sitter-bash = "0.25.1" tree-sitter-c = "0.24.2" tree-sitter-cpp = "0.23.4" tree-sitter-go = "0.25.0" tree-sitter-java = "0.23.5" serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" pulldown-cmark = "0.13" base64 = "0.23" arboard = "3.6" rfd = "0.17" image = { version = "0.25", default-features = false, features = ["png", "jpeg", "gif", "webp", "bmp", "ico"] } tokio = { version = "1", features = ["rt-multi-thread", "macros", "sync", "time", "net", "io-util", "process"] } russh = "0.65" reqwest = { version = "0.13", default-features = false, features = ["json", "stream", "rustls", "query", "form"] } futures-util = "0.3" regex = "1" log = "0.4" memchr = "2" glob = "0.3" git2 = { version = "0.21", features = ["https", "ssh", "vendored-libgit2"] } walkdir = "2" # ripgrep's walker: the agent's search tools honour .gitignore like rg does. ignore = "0.4" fontdb = "0.24" memmap2 = "0.9" # Same version egui reads font metrics with; used to center text faces optically in their rows. skrifa = "0.49" chrono = { version = "0.4", default-features = false, features = ["clock", "std"] } dirs = "7" sha2 = "0.11" rand = "0.10" qrcode = { version = "0.14", default-features = false } webbrowser = "1" url = "2" portable-pty = "0.9" vt100 = "0.16" keyring-core = "1" zip = { version = "9", default-features = false, features = ["deflate"] } flate2 = "1" tar = "0.4" cpal = "0.18" pdf-extract = "0.12.1" roxmltree = "0.20" [target.'cfg(unix)'.dependencies] libc = "0.2" [target.'cfg(target_os = "macos")'.dependencies] apple-native-keyring-store = { version = "1", features = ["keychain"] } whisper-rs = { version = "0.16", features = ["metal"] } mac-notification-sys = "0.6" # Native menu bar (macOS global menu, Windows window menu). Linux would need a GTK window. [target.'cfg(any(target_os = "macos", target_os = "windows"))'.dependencies] muda = { version = "0.21", default-features = false } [target.'cfg(not(target_os = "macos"))'.dependencies] whisper-rs = "0.16" [target.'cfg(target_os = "windows")'.dependencies] windows-native-keyring-store = "1" windows-sys = { version = "0.61", features = ["Win32_Foundation", "Win32_System_Console", "Win32_System_Power", "Win32_UI_Input_KeyboardAndMouse"] } # Keep gpu-allocator's broad windows dependency aligned with wgpu-hal. Without this pin Cargo can # unify it with cpal's windows 0.54 dependency, producing incompatible Direct3D 12 types on Windows. windows = { version = "=0.62.2", features = ["Win32_Graphics_Direct3D12", "Win32_Graphics_Dxgi_Common"] } [target.'cfg(all(unix, not(any(target_os = "macos", target_os = "ios", target_os = "android"))))'.dependencies] zbus-secret-service-keyring-store = { version = "1", features = ["crypto-rust"] } [build-dependencies] winresource = "0.1" [dev-dependencies] # Bare test contexts that never call `theme::setup_style` still need some font; release builds # install only Oxi's bundled faces (resolver 2 keeps dev features out of them). egui = { version = "0.35", features = ["default_fonts"] } egui_kittest = { version = "0.35", features = ["eframe", "wgpu"] } wiremock = "0.6" # What release artifacts are built with (`cargo build --profile dist`). Kept separate from # `release` so local `cargo run --release` stays quick to rebuild while iterating on the UI. [profile.dist] inherits = "release" lto = "thin" codegen-units = 1