← Discover MCPs and Agents
o
AgentAI & MLGitHub

ollama-desktop-agent

Autonomous AI desktop agent powered by local Ollama LLM — automates files, Excel, web, shell and GUI tasks on Windows.

Links

README

From the repo.

🤖 ATLAS - AI Task & Automation System

A fully autonomous AI agent powered by a local Ollama LLM that can plan, execute, and verify desktop automation tasks on Windows.


✨ Features

CategoryCapabilities
📄 FilesCreate, read, edit, delete, copy, move, search, append text files
📊 ExcelCreate workbooks with formatted tables, auto-sum, charts (bar/line/pie)
📸 ScreenshotsFull-screen or region capture, saved automatically to screenshots/ folder
🌐 WebOpen URLs, fill forms, click buttons, scrape page content
💻 ShellExecute CMD & PowerShell commands, get system info
🤖 GUI AutomationMouse clicks, keyboard typing, hotkeys
📈 ChartsGenerate bar, line, pie, scatter charts via matplotlib
📝 Word DocumentsCreate .docx with headings, paragraphs, bullet lists

🧠 Agent Intelligence

  • Plan → Execute → Verify - every task goes through a full lifecycle
  • Self-healing - automatic retries with LLM-corrected parameters on failure
  • Safety - dangerous commands are blocked, plans require user confirmation
  • Path intelligence - understands "Desktop", "Documents", "Downloads" as real paths

🚀 Quick Start

1. Prerequisites

Make sure Ollama is installed and running:

ollama serve
ollama pull jobautomation/OpenEuroLLM-Polish:latest

💡 You can use any Ollama model instead of the default one. See Changing the Model in the Configuration section.

2. Clone & Install

git clone https://github.com/yourusername/atlas-agent.git
cd atlas-agent
pip install -r requirements.txt

3. Run

# Interactive mode
python atlas.py

# Single task mode
python atlas.py --task "Create a file hello.txt on Desktop with text Hello World"

# Custom model
python atlas.py --model "your-model:latest"

💬 Usage Examples

🤖 ATLAS> Create a budget Excel on Desktop with food, transport, bills and add a pie chart

🤖 ATLAS> Take a screenshot of my screen

🤖 ATLAS> Open wikipedia.org and scrape the main page title

🤖 ATLAS> List all .txt files on my Desktop

🤖 ATLAS> Create a Word document with a quarterly report

🤖 ATLAS> Run systeminfo in PowerShell

🤖 ATLAS> Create a bar chart of monthly sales: Jan 100, Feb 150, Mar 200

Interactive Commands

CommandDescription
/helpShow help and examples
/toolsList all 29 available tools
/statusSystem & dependency status
/historyView past tasks
/clearClear conversation memory
/exitQuit ATLAS

🏗️ Architecture

                        User Request
                             │
                             ▼
                      ┌─────────────┐
                      │  Ollama LLM │
                      │  (Planning) │
                      └──────┬──────┘
                             │ JSON Plan
                             ▼
                      ┌─────────────┐
                      │  Response   │
                      │  Parser     │
                      └──────┬──────┘
                             │ TaskPlan
                             ▼
                      ┌─────────────┐
                      │  Execution  │◄──── Retry + Self-Heal
                      │  Engine     │
                      └──────┬──────┘
                             │
          ┌──────┬───────┬───┴────┬────────┬─────────┐
          ▼      ▼       ▼       ▼        ▼         ▼
       ┌──────┬───────┬───────┬───────┬────────┬─────────┐
       │ File │ Excel │  Web  │ Shell │ Screen │  Chart  │
       │ Tools│ Tools │ Tools │ Tools │ Tools  │  Tools  │
       └──────┴───────┴───────┴───────┴────────┴─────────┘
                             │
                             ▼
                      ┌─────────────┐
                      │  Ollama LLM │
                      │(Verification)│
                      └─────────────┘

📁 Project Structure

atlas/
├── atlas.py               # Main agent script (single file)
├── requirements.txt       # Python dependencies
├── README.md              # This file
├── LICENSE                # MIT License
├── screenshots/           # Auto-created: saved screenshots
└── logs/                  # Auto-created: execution logs
    └── atlas_YYYYMMDD_HHMMSS.log

🧰 All 29 Tools

Click to expand full tool list

File Operations

ToolParametersDescription
create_text_filepath, contentCreate or overwrite a text file
read_filepathRead file contents
edit_filepath, old_text, new_textFind & replace text in file
delete_filepathDelete a file
list_filesdirectoryList directory contents
create_directorypathCreate directory tree
copy_filesource, destinationCopy a file
move_filesource, destinationMove or rename a file
search_filesdirectory, patternRecursive glob search
append_to_filepath, contentAppend text to file

Excel

ToolParametersDescription
create_excelpath, data, sheet_nameCreate formatted workbook
edit_excelpath, sheet_name, cell, valueSet a cell value
add_excel_chartpath, chart_type, titleAdd bar/line/pie chart
read_excelpathRead all rows from workbook

Screenshots

ToolParametersDescription
take_screenshotfilenameFull-screen capture
screenshot_regionx, y, width, height, filenameRegion capture

Web / Browser

ToolParametersDescription
open_urlurlOpen URL in browser
web_fill_formurl, fieldsFill form fields
web_clickselectorClick a web element
web_scrapeurl, selectorExtract page data

Shell

ToolParametersDescription
run_shellcommandExecute CMD command
run_powershellcommandExecute PowerShell command
get_system_info-Get system information

GUI Automation

ToolParametersDescription
mouse_clickx, yClick at screen coordinates
type_texttextType text via keyboard
hotkeykeysSend keyboard shortcut
wait_secondssecondsWait / sleep

Charts & Documents

ToolParametersDescription
create_chartdata, chart_type, title, filenameMatplotlib chart
create_word_documentpath, contentWord .docx document

⚙️ Configuration

Changing the Model

By default ATLAS uses jobautomation/OpenEuroLLM-Polish:latest, but you can use any model available in Ollama. To switch:

1. See what models you have installed:

ollama list

2. Pull a different model (if you don't have it yet):

ollama pull qwen2.5:1.5b-instruct

3. Run ATLAS with your chosen model:

python atlas.py --model "qwen2.5:1.5b-instruct"

💡 Models with good instruction-following work best (e.g. qwen2.5, llama3, mistral, gemma2). Larger models produce more reliable JSON plans but require more RAM.

To change the default model permanently (without using --model every time), edit atlas.py in two places:

# 1. In OllamaEngine.__init__:
model_name: str = "your-model:latest"

# 2. In main() argparse:
default="your-model:latest"

Command-line Arguments

FlagDescriptionDefault
--modelOllama model namejobautomation/OpenEuroLLM-Polish:latest
--taskRun single task then exit(interactive mode)

LLM Parameters (tuned for speed)

ParameterJSON modeChat modePurpose
temperature0.10.5Lower = more deterministic plans
num_predict7681024Max tokens generated
num_ctx20482048Context window (RAM-friendly)
repeat_penalty1.21.2Prevents repetitive output

🛡️ Safety Features

  • ⛔ Blocked commands: format, del /s /q c:, shutdown, rm -rf /
  • ✅ User confirmation required before executing any plan
  • 🔒 Path validation via PathResolver - no accidental system file access
  • 🔍 Post-execution verification by the LLM
  • 📝 Full logging of every action to logs/ directory

🖥️ System Requirements

  • OS: Windows 10 / 11
  • RAM: 8 GB minimum, 16 GB recommended
  • Python: 3.10 or newer
  • Ollama: Running locally with a pulled model
  • Chrome: Required only for web automation (Selenium)

Key Python dependencies: ollama, openpyxl, matplotlib, selenium, webdriver-manager, pillow, rich, python-docx, beautifulsoup4, requests


🔧 Troubleshooting

LLM doesn't generate a valid plan / JSON errors This usually means the model is too small or not instruction-tuned well enough. Try a larger or better model. Models with at least 7B parameters work most reliably. Smaller models (1.5B–3B) may struggle with complex multi-step tasks.

"Model not found" error Make sure the model name in the command matches exactly what ollama list shows - including capitalisation and tag (e.g. :latest).

Selenium / Chrome not working Make sure Google Chrome is installed. The webdriver-manager package downloads the correct ChromeDriver automatically, but it requires an internet connection on first run.

Screenshots not working Requires either Pillow or pyautogui to be installed. Run pip install Pillow pyautogui and try again.

Tasks work but results are wrong Try increasing num_ctx in the code (default: 2048). For complex tasks, the LLM may lose context. Setting it to 4096 helps but requires more RAM.

PyAutoGUI FailSafeException Move your mouse to the top-left corner of the screen triggers a safety stop. This is intentional - just rerun the task.


🤝 Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/new-tool)
  3. Commit your changes (git commit -m 'Add new tool')
  4. Push to the branch (git push origin feature/new-tool)
  5. Open a Pull Request

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.

Collected info

  • ★ 6 stars
  • Language: Python
  • Source updated: 8/13/2026