Observed since 21 Oct, 10:27 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
ai-desktop-use
AI-powered desktop automation SDK - like Browser-Use but for your entire desktop
AI-powered desktop automation SDK — like Browser-Use but for your entire desktop.
from desktop_use import Agent
agent = Agent(task="Open Calculator and calculate 2+2")
result = agent.run_sync()
# Install cliclick (macOS only)
brew install cliclick
# Install Desktop-Use
pip install desktop-use
Go to System Settings → Privacy & Security → Accessibility and enable your Terminal app.
# CLI
desktop-use "Open Spotlight and search for Notes"
# Python
python -c "from desktop_use import run; run('Open Calculator')"
from desktop_use import Agent, AgentConfig
# Simple usage
agent = Agent(task="Open FaceTime")
result = agent.run_sync()
# With configuration
config = AgentConfig(
model="claude-4-sonnet-20250514",
max_steps=20,
verbose=True
)
agent = Agent(task="Create a new folder called 'Test' on Desktop", config=config)
result = agent.run_sync()
if result.success:
print(f"Done: {result.final_message}")
else:
print(f"Failed: {result.error}")
from desktop_use import Desktop
desktop = Desktop()
# Direct control
desktop.click(100, 200)
desktop.type("Hello World")
desktop.press("return")
desktop.hotkey("cmd", "space") # Open Spotlight
# Screenshot
img = desktop.screenshot()
img.save("screen.png")
# Basic usage
desktop-use "Open Safari and go to google.com"
# With options
desktop-use --max-steps 25 "Fill out the form on the current page"
desktop-use --model claude-4-opus-20250514 "Complex multi-step task"
desktop-use --quiet "Background task"
| Platform | Status | Mouse/Keyboard | Screenshots |
|---|---|---|---|
| macOS | ✅ Ready | cliclick | native/mss |
| Windows | 🔜 Soon | pyautogui | mss |
| Linux | 🔜 Soon | pyautogui | mss |
brew install cliclick)The coordinate scaling is automatic - Claude works in scaled coordinates, and Desktop-Use maps them back to your actual resolution.
Connect to Remembra for persistent memory:
config = AgentConfig(
memory_url="http://localhost:8787",
memory_project_id="my-automation"
)
agent = Agent(task="Do what I asked yesterday", config=config)
Contributions welcome! See CONTRIBUTING.md.
MIT License - see LICENSE.
Built with ❤️ by DolphyTech
Download counts and popularity will appear here as the collector receives them.
| Package / target | Requirement | Relationship |
|---|---|---|
anthropicEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.10",
"evaluation": "NOT_EVALUATED"
} | anthropic>=0.80.0 | runtime |
mssEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.10",
"evaluation": "NOT_EVALUATED"
} | mss>=9.0.0 | runtime |
pillowEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.10",
"evaluation": "NOT_EVALUATED"
} | pillow>=10.0.0 | runtime |
pytest-asyncioEnvironment{
"extras": "",
"marker": "extra == \"dev\"",
"requires_python": ">=3.10",
"evaluation": "NOT_EVALUATED"
} | pytest-asyncio>=0.23.0; extra == "dev" | runtime |
pytestEnvironment{
"extras": "",
"marker": "extra == \"dev\"",
"requires_python": ">=3.10",
"evaluation": "NOT_EVALUATED"
} | pytest>=8.0.0; extra == "dev" | runtime |
ruffEnvironment{
"extras": "",
"marker": "extra == \"dev\"",
"requires_python": ">=3.10",
"evaluation": "NOT_EVALUATED"
} | ruff>=0.3.0; extra == "dev" | runtime |
httpxEnvironment{
"extras": "",
"marker": "extra == \"memory\"",
"requires_python": ">=3.10",
"evaluation": "NOT_EVALUATED"
} | httpx>=0.27.0; extra == "memory" | runtime |
bdist_wheel · 32.56 KB · Python py3
sdist · 100.33 KB · Python source
Observed since 21 Oct, 10:27 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package_version:a362f5e76de86c4a4cc2c3faaac5dfd8a842e323ddf137ea1386a93e868f7544