Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 45 additions & 0 deletions src-tauri/Cargo.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
[package]
name = "localcowork"
version = "0.1.0"
description = "LocalCowork — on-device AI agent desktop app"
authors = ["LocalCowork Contributors"]
license = "MIT"
edition = "2021"
rust-version = "1.77"

[build-dependencies]
tauri-build = { version = "2", features = [] }

[dependencies]
tauri = { version = "2", features = ["devtools"] }
tauri-plugin-shell = "2"
serde = { version = "1", features = ["derive"] }
serde_json = "1"
serde_yaml = "0.9"
tokio = { version = "1", features = ["full"] }
anyhow = "1"
thiserror = "2"
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["json", "env-filter"] }
uuid = { version = "1", features = ["v4"] }
chrono = { version = "0.4", features = ["serde"] }
reqwest = { version = "0.12", features = ["json", "stream"] }
rusqlite = { version = "0.32", features = ["bundled"] }
futures = "0.3"
dirs = "6"
sysinfo = "0.33"
sha2 = "0.10"
tauri-plugin-dialog = "2"

[dev-dependencies]
tempfile = "3"

[features]
default = ["custom-protocol"]
custom-protocol = ["tauri/custom-protocol"]

[profile.release]
strip = true
lto = true
codegen-units = 1
panic = "abort"
3 changes: 3 additions & 0 deletions src-tauri/build.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
fn main() {
tauri_build::build();
}
15 changes: 15 additions & 0 deletions src-tauri/capabilities/default.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{
"identifier": "default",
"description": "Default capabilities for LocalCowork",
"windows": ["main"],
"permissions": [
"core:default",
"shell:allow-open",
"shell:allow-execute",
"shell:allow-spawn",
"shell:allow-stdin-write",
"dialog:default",
"dialog:allow-open",
"dialog:allow-save"
]
}
19 changes: 19 additions & 0 deletions src-tauri/entitlements.plist
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<!-- Allow spawning child processes (Node.js/Python MCP servers) -->
<key>com.apple.security.cs.allow-unsigned-executable-memory</key>
<true/>
<!-- Allow loading external dynamic libraries (Python packages, Node modules) -->
<key>com.apple.security.cs.disable-library-validation</key>
<true/>
Comment on lines +6 to +11

Copilot AI Mar 6, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These entitlements significantly weaken macOS code-signing protections (unsigned executable memory and disabled library validation). If they’re strictly required, consider documenting the concrete runtime need (which subsystem requires them) and, if possible, tightening to the minimum entitlements needed (e.g., prefer more specific JIT-related entitlements where applicable) to reduce attack surface.

Suggested change
<!-- Allow spawning child processes (Node.js/Python MCP servers) -->
<key>com.apple.security.cs.allow-unsigned-executable-memory</key>
<true/>
<!-- Allow loading external dynamic libraries (Python packages, Node modules) -->
<key>com.apple.security.cs.disable-library-validation</key>
<true/>

Copilot uses AI. Check for mistakes.
<!-- Allow outbound network connections (localhost Ollama API) -->
<key>com.apple.security.network.client</key>
<true/>
<!-- Allow read/write to user-selected files (via open/save dialogs) -->
<key>com.apple.security.files.user-selected.read-write</key>
<true/>
</dict>
</plist>
Binary file added src-tauri/icons/128x128.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src-tauri/icons/128x128@2x.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src-tauri/icons/32x32.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src-tauri/icons/icon.icns
Binary file not shown.
Binary file added src-tauri/icons/icon.ico
Binary file not shown.
3 changes: 3 additions & 0 deletions src-tauri/mcp-servers.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"servers": {}
}
Loading