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 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)
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)
Screen β’ Camera β’ Mic β’ Audio
Local LLMs
Messaging β’ Notifications β’ Recording β’ Memory β’ Code
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
}
π§ Text & Visual Memory
π₯ Smart Screen Recording
π§ Email β’ π¬ Discord β’ π± Telegram π SMS β’ π WhatsApp β’ Pushover
Creating your own Observer AI consist of three things:
* 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 memoryappendImageMemory(agentId?, images)* - Add images to memorystartAgent(agentId?)* β Starts an agent stopAgent(agentId?)* β Stops an agenttime() - Gets current timesleep(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 emailsendPushover(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 recordingmarkClip(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 dialogmessage(message, title="Agent Message") - Pops up a system messagesystem_notify(body, title="Observer AI") - Sends a system notificationoverlay(body) - Pushes a message to the overlayclick() - Triggers a mouse click at the current cursor positionThe "Code" tab receives the following variables as context before running:
response - The model's responseagentId - The id of the agent running the codescreen - The screen if captured camera - The camera if captured imemory - The agent's current image in memoryimages - All images sent to the model prompt - The model's promptJavaScript 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
}
There are a few ways to get Observer up and running with local inference. I recommend the Observer App.
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.
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.
For Docker setup instructions, see docker/DOCKER.md.
For Jupyter server setup instructions, see app/JUPYTER.md.
Save your agent, test it from the dashboard, and upload to community to share with others!
We welcome contributions from the community! Here's how you can help:
git checkout -b feature/amazing-feature)git commit -m 'feat: add amazing feature')git push origin feature/amazing-feature)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!
AI-powered auto quiz solver for Bilibili hardcore membership exam. Supports DeepSeek, Gemini and OpenAI models. Calls Bilibili API directly with QR login for automated question answering.
Android Clash proxy client with pbMeta and pbSmart core variants, supporting multi-architecture builds (arm64-v8a, armeabi-v7a, x86, x86_64, universal) with active Alpha development for network proxy management.
Offline-first Android music player built with Kotlin and Jetpack Compose. Plays local MP3, FLAC and AAC files with Material 3 design, home screen widget, tag editor and AI features.
Cross-platform network monitoring tool built with Rust for terminal. Tracks TCP, UDP, ICMP and ARP connections with process identification, packet inspection and vim-style filtering. Runs on Linux, macOS, Windows and FreeBSD.
Open-source Rust proxy for AI agent communication. Provides security, observability and governance for agent-to-agent connections. Supports A2A and MCP protocols with multi-tenant RBAC and legacy API transformation.
Free cross-platform iOS device manager for Windows, macOS and Linux. Features AirPlay screen mirroring, App Store downloads, file transfer, GPS location changing and SSH terminal.