βœ“
Observer Download

Build local AI agents that observe your screen, microphone and clipboard, process with local LLMs, and react with notifications, screen recording and memory. All data stays private. Works with Ollama and OpenAI.

⭐ 1,216 stars on GitHub
Latest Release: v1.3.6

About Software

Observer AI lets you build micro-agents that watch your digital world and react intelligently. Agents use sensors like screen OCR, screenshots, microphone and clipboard as input, process them with local LLMs, and take actions through tools like notifications, screen recording and memory storage. All data stays 100% private on your device.

Create agents with system prompts and choose from sensors like $SCREEN_OCR for text, $SCREEN_64 for images, $MICROPHONE for audio, and $CLIPBOARD for clipboard content. Agents can send notifications to Discord, Telegram, email, SMS, WhatsApp, make phone calls, record screen clips, and store memories. Works with Ollama, OpenAI, vLLM, llama.cpp and LMStudio. Available for Windows, macOS and Linux.

Use Cases:

  • Build AI agents that watch your screen and react to what they see
  • Send notifications via email, Discord, Telegram, SMS or WhatsApp when conditions are met
  • Record screen activity automatically with smart clip marking
  • Store text and visual memories for agents to remember context
  • Run local AI models with Ollama or OpenAI compatible endpoints

Downloads

v1.3.6 December 02, 2025
Observer_1.3.6_aarch64.dmgdmg
Observer_1.3.6_amd64.AppImageAppImage
Observer_1.3.6_amd64.debdeb
Observer_1.3.6_x64-setup.exeexe
Observer_1.3.6_x64.dmgdmg
Observer_1.3.6_x64_en-US.msimsi
v1.3.5 November 22, 2025
Observer_1.3.5_aarch64.dmgdmg
Observer_1.3.5_amd64.AppImageAppImage
Observer_1.3.5_amd64.debdeb
Observer_1.3.5_x64-setup.exeexe
Observer_1.3.5_x64.dmgdmg
Observer_1.3.5_x64_en-US.msimsi
v1.3.3 November 12, 2025
Observer_1.3.3_aarch64.dmgdmg
Observer_1.3.3_amd64.AppImageAppImage
Observer_1.3.3_amd64.debdeb
Observer_1.3.3_x64-setup.exeexe
Observer_1.3.3_x64.dmgdmg
Observer_1.3.3_x64_en-US.msimsi
v1.3.2 November 07, 2025
Observer_1.3.2_aarch64_darwin.dmgdmg
Observer_1.3.2_amd64_linux.AppImageAppImage
Observer_1.3.2_amd64_linux.debdeb
Observer_1.3.2_x64-setup_windows.exeexe
Observer_1.3.2_x64_darwin.dmgdmg
Observer_1.3.2_x64_en-US_windows.msimsi
v1.3.1 November 03, 2025
Observer_1.3.1_aarch64_darwin.dmgdmg
Observer_1.3.1_amd64_linux.AppImageAppImage
Observer_1.3.1_amd64_linux.debdeb
Observer_1.3.1_x64-setup_windows.exeexe
Observer_1.3.1_x64_darwin.dmgdmg
Observer_1.3.1_x64_en-US_windows.msimsi
v1.3.0 October 23, 2025
Observer_1.3.0_aarch64.dmgdmg
Observer_1.3.0_amd64.debdeb
Observer_1.3.0_x64-setup.exeexe
Observer_1.3.0_x64.dmgdmg
Observer_1.3.0_x64_en-US.msimsi
v1.2.1 October 02, 2025
Observer_1.2.1_aarch64.dmgdmg
Observer_1.2.1_amd64.AppImageAppImage
Observer_1.2.1_amd64.debdeb
Observer_1.2.1_x64-setup.exeexe
Observer_1.2.1_x64.dmgdmg
Observer_1.2.1_x64_en-US.msimsi
v1.2.0 September 24, 2025
Observer_1.2.0_aarch64.dmgdmg
Observer_1.2.0_x64-setup.exeexe
Observer_1.2.0_x64.dmgdmg
Observer_1.2.0_x64_en-US.msimsi
v1.1.5 September 14, 2025
Observer_1.1.5_aarch64.dmgdmg
Observer_1.1.5_x64-setup.exeexe
Observer_1.1.5_x64.dmgdmg
Observer_1.1.5_x64_en-US.msimsi
v1.1.4 September 03, 2025
Observer_1.1.4_aarch64.dmgdmg
Observer_1.1.4_x64-setup.exeexe
Observer_1.1.4_x64.dmgdmg
Observer_1.1.4_x64_en-US.msimsi
v1.1.3 August 02, 2025
Observer_1.1.3_aarch64.dmgdmg
Observer_1.1.3_x64-setup.exeexe
Observer_1.1.3_x64.dmgdmg
Observer_1.1.3_x64_en-US.msimsi
v1.1.2 July 31, 2025
Observer_1.1.2_aarch64.dmgdmg
Observer_1.1.2_x64-setup.exeexe
Observer_1.1.2_x64.dmgdmg
Observer_1.1.2_x64_en-US.msimsi
v1.1.1 July 22, 2025
Observer_1.1.1_aarch64.dmgdmg
Observer_1.1.1_x64-setup.exeexe
Observer_1.1.1_x64.dmgdmg
Observer_1.1.1_x64_en-US.msimsi
v1.1.0 July 22, 2025
Observer_1.1.0_aarch64.dmgdmg
Observer_1.1.0_x64-setup.exeexe
Observer_1.1.0_x64.dmgdmg
Observer_1.1.0_x64_en-US.msimsi
v1.0.4 July 21, 2025
Observer_1.0.4_aarch64.dmgdmg
Observer_1.0.4_x64-setup.exeexe
Observer_1.0.4_x64.dmgdmg
Observer_1.0.4_x64_en-US.msimsi

Package Info

Last Updated
Dec 02, 2025
Latest Version
v1.3.6
License
MIT
Total Versions
15

README

πŸ‘οΈ Observer AI

Local Micro-Agents That Observe, Log and React

Build powerful micro-agents that observe your digital world, remember what matters, and react intelligentlyβ€”all while keeping your data 100% private and secure.

Observer App Online (https://img.shields.io/badge/🌐_Observer_App-Online-blue?style=for-the-badge&color=4CAF50) Download App (https://img.shields.io/badge/⬇️_Download-Latest_Release-blue?style=for-the-badge&color=2196F3) Support Project (https://img.shields.io/badge/β˜•_Support-Buy_Me_Coffee-blue?style=for-the-badge&color=FF9800)

GitHub Pages (https://img.shields.io/badge/GitHub%20Pages-Deployed-success) License (https://img.shields.io/badge/License-MIT-blue.svg)

πŸ”— Links

Website (https://observer-ai.com) | WebApp (https://app.observer-ai.com) | YouTube (https://www.youtube.com/@Observer-AI) | Tiktok (https://www.tiktok.com/@observerai) | Twitter (https://x.com/AppObserverAI)


πŸ‘οΈ How Observer Agents Work

Sensors β†’

Models β†’

Tools

Screen β€’ Camera β€’ Mic β€’ Audio

Local LLMs

Messaging β€’ Notifications β€’ Recording β€’ Memory β€’ Code


πŸ€– Base Agent Example

Sends an email when the Observer logo is on screen

System Prompt (uses $SCREEN_64 for screen input)

You are an Observer agent, watch the screen and if you see the Observer logo say OBSERVER, if you don't, say CONTINUE. 
$SCREEN_64

Code using Email Tool if model identified an Observer logo

if(response.includes("OBSERVER")){
  sendEmail("[email protected]", response, screen); //sends the screen as an attached image
}

🎯 What Observer AI Does Best

πŸ“Š Intelligent Logging

🧠 Text & Visual Memory

πŸŽ₯ Smart Screen Recording

🚨 Powerful Notifications

πŸ“§ Email β€’ πŸ’¬ Discord β€’ πŸ“± Telegram πŸ“ž SMS β€’ πŸ’š WhatsApp β€’ Pushover


πŸ—οΈ Building Your Own Agent

Creating your own Observer AI consist of three things:

  • SENSORS - input that your model will have
  • MODELS - Small LLMs
  • TOOLS - functions for your model to use

Quick Start

  1. Navigate to the Agent Dashboard and click "Create New Agent"
  2. Fill in the "Configuration" tab with basic details (name, description, model, loop interval)
  3. Give your model a system prompt and Sensors! The current Sensors that exist are:
    • Screen OCR ($SCREEN_OCR) Captures screen content as text via OCR
    • Screenshot ($SCREEN_64) Captures screen as an image for multimodal models
    • Agent Memory ($MEMORY or $MEMORY@agent_id) Accesses agents' stored information (defaults to current agent)
    • Agent Image Memory ($IMEMORY or $IMEMORY@agent_id) Accesses agents' stored images (defaults to current agent)
    • Clipboard ($CLIPBOARD) It pastes the clipboard contents
    • Microphone* ($MICROPHONE) Captures the microphone and adds a transcription
    • Screen Audio* ($SCREEN_AUDIO) Captures the audio transcription of screen sharing a tab.
    • All audio* ($ALL_AUDIO) Mixes the microphone and screen audio and provides a complete transcription of both (used for meetings).

* Uses a whisper model with transformers.js

Agent Tools:

  • getMemory(agentId?)* – Retrieve stored memory
  • setMemory(agentId?, content)* – Replace stored memory
  • appendMemory(agentId?, content)* – Add to existing memory
  • getImageMemory(agentId?)* - Retrieve images stored in memory
  • setImageMemory(agentId?, images)* - Set images to memory
  • appendImageMemory(agentId?, images)* - Add images to memory
  • startAgent(agentId?)* – Starts an agent
  • stopAgent(agentId?)* – Stops an agent
  • time() - Gets current time
  • sleep(ms) - Waits that ammount of miliseconds

* agentId is optional, deaults to agent running code

Notification Tools:

  • sendDiscord(discord_webhook, message, images?) - Directly sends a discord message to a server.
  • sendTelegram(chat_id, message, images?) Sends a telegram message with the Observer bot. Get the chat_id messaging the bot @observer_notification_bot.
  • sendEmail(email, message, images?) - Sends an email
  • sendPushover(user_token, message, images?, title?) - Sends a pushover notification.
  • call(phone_number, message)* - Makes an automated phone call with text-to-speech message.
  • sendWhatsapp(phone_number, message)* - Sends a whatsapp message with the Observer bot.
  • sendSms(phone_number, message, images?)* - Sends an SMS to a phone number. Due to A2P policy, blocked for US/Canada.
  • notify(title, options) – Send browser notification ⚠️IMPORTANT: Some browsers block notifications

* To activate, SMS or call +1 (863)208-5341 or whatsapp +1 (555)783-4727

Video Recording Tools:

  • startClip() - Starts a recording of any video media and saves it to the recording Tab.
  • stopClip() - Stops an active recording
  • markClip(label) - Adds a label to any active recording that will be displayed in the recording Tab.

App Tools:

  • ask(question, title="Confirmation") - Pops up a system confirmation dialog
  • message(message, title="Agent Message") - Pops up a system message
  • system_notify(body, title="Observer AI") - Sends a system notification
  • overlay(body) - Pushes a message to the overlay
  • click() - Triggers a mouse click at the current cursor position

Code Tab

The "Code" tab receives the following variables as context before running:

  • response - The model's response
  • agentId - The id of the agent running the code
  • screen - The screen if captured
  • camera - The camera if captured
  • imemory - The agent's current image in memory
  • images - All images sent to the model
  • prompt - The model's prompt

JavaScript agents run in the browser sandbox, making them ideal for passive monitoring and notifications:

// Remove Think tags for deepseek model
const cleanedResponse = response.replace(/[\s\S]*?/g, '').trim();

// Get time
const time = time();

// Update memory with timestamp
appendMemory(`[${time}] ${cleanedResponse}`);

// Send to Telegram if the model mentions a word
if(response.includes("word")){
  sendTelegram(cleanedResponse, "12345678") // Example chat_id
}

πŸš€ Getting Started with Local Inference

There are a few ways to get Observer up and running with local inference. I recommend the Observer App.

Option 1: Just Install the Desktop App with any OpenAI compatible endpoint (Ollama, llama.cpp, vLLM)

Download the Official App:

Download App (https://img.shields.io/badge/⬇️_Download-Latest_Release-blue?style=for-the-badge&color=2196F3)

Download Ollama for the best compatibility. Observer can connect directly to any server that provides a v1/chat/completions endpoint.

vLLM, llama.cpp, LMStudio etc:

Set the Custom Model Server URL on the App to any OpenAI compatible endpoint if not using Ollama.

NOTE: Your browser app sends the request to localhost:3838 which the ObserverApp proxies to your Custom Model Server URL, this is because of CORS.

Option 2: Full Docker Setup (Deprecated)

For Docker setup instructions, see docker/DOCKER.md.

Setting Up Python (Jupyter Server)

For Jupyter server setup instructions, see app/JUPYTER.md.

Deploy & Share

Save your agent, test it from the dashboard, and upload to community to share with others!

🀝 Contributing

We welcome contributions from the community! Here's how you can help:

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

πŸ“„ License

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


Built with ❀️ by Roy Medina for the Observer AI Community Special thanks to the Ollama team for being an awesome backbone to this project!