Skip to main content

AURA

Automated Realtime Assistant

An autonomous agent that turns a plain-English goal into a plan, then carries it out on your own machine:
shell, files, web, a logged-in browser, Gmail and Calendar, and the desktop itself, driven by on-screen OCR.

PyPI version Python 3.10+ MIT license Any OpenAI-compatible LLM

Demos  |  Quick start  |  How it works  |  Tools  |  Python library  |  Configuration

pip install "aura-autonomous-agent[all]"
aura run "schedule a Meet with the team tomorrow at 10 and email them the link"

Highlights

  • Plans, then acts. A dedicated planner call breaks each goal into up to 10 ordered subtasks; a ReAct executor then calls tools, reads every result and self-corrects until each subtask is done.
  • 35 built-in tools across shell, files, web search, Playwright, Gmail, Google Calendar, Google Meet, Google Forms and OS-level mouse and keyboard control.
  • Sees the screen without spending tokens. Native Windows OCR turns the display into a map of every text line and its pixel position, so the agent clicks by coordinates on apps that have no API. A vision model is the fallback for purely graphical screens.
  • Learns new tools by watching you. Record yourself doing a task once; a vision model writes it up as a Python tool, which is hot-registered and available immediately, with no restart.
  • Works as you. Drives your real Chrome profile with its logins and cookies, and your Google account over OAuth.
  • Model-agnostic. Runs against any OpenAI-compatible endpoint: OpenAI, a LiteLLM proxy, vLLM or a self-hosted open-weight model.
  • Safe by default. Writes and shell commands ask Y/N first; deletes, sudo, git push and package installs always ask, even with safe mode off.
  • A CLI and a library. Use aura run in a terminal or from aura import Agent in your own code, with your own Python functions as extra tools.

Demos

Each clip is a single prompt typed or spoken into aura run. AURA plans the steps and carries them out on its own. Previews are sped up; click one to watch the full recording.

Writes and publishes a LinkedIn post

"open linkedin and make a post on the rabbit and the hare"

Opens Chrome on the logged-in profile, writes the story into the post composer and clicks Post.

AURA writing and publishing a LinkedIn post

Voice to code

/voice then "give me CNN code for mnist dataset"

Transcribes the request, plans it and writes a complete PyTorch MNIST CNN with data loading, model, training loop and evaluation.

AURA turning a spoken request into a PyTorch CNN

Finds and plays IPL highlights on JioHotstar

"open jiohotstar, search for RCB vs DC highlights and play the first video"

Launches the app from the Start menu, searches for the match and starts playback.

AURA finding and playing IPL highlights on JioHotstar

Searches YouTube and plays a video

"open youtube, search for sidemen and play the first youtube video"

Opens the browser, runs the search and plays the top result.

AURA searching YouTube and playing a video


Quick start

1. Install

pip install "aura-autonomous-agent[all]"   # every tool
pip install aura-autonomous-agent          # core only: agent loop + shell, file and web tools
playwright install chromium                # once, for the browser tools

2. Point it at a model. Any OpenAI-compatible endpoint works. Put this in a .env file in your working directory or in ~/.aura/.env:

INFERX_BASE_URL=https://api.openai.com/v1
INFERX_API_KEY=sk-...
INFERX_MODEL=gpt-4o-mini

3. Run it

aura run                                         # interactive session
aura run "create a Flask app with a /ping endpoint and run it"
aura learn "check my bank balance"               # record a workflow, get a new tool

Or call it from Python

from aura import Agent

agent = Agent(api_key="sk-...", base_url="https://api.openai.com/v1", model="gpt-4o-mini")
print(agent.run("create hello.py that prints hi, then run it"))

How it works

  goal  (typed, spoken with /voice, or passed to Agent.run)
    |
    v
+---------------------------+
|  Planner                  |   one low-temperature LLM call
|  goal -> up to 10 tasks   |   falls back to [goal] if planning fails
+---------------------------+
    |  for each task
    v
+---------------------------+   tool calls    +-----------------------------+
|  Executor (ReAct loop)    | --------------> |  Tool registry: 35 tools    |
|  think -> act -> observe  |                 |  shell, files, web,         |
|  capped at 30 iterations  | <-------------- |  browser, desktop, Google,  |
+---------------------------+   observations  |  learned tools              |
    |                |                        +-----------------------------+
    v                v                                      ^
 Confirmation     Session memory                            |
 gate (Y/N)       ~/.aura/sessions/*.json         watch-and-learn writes
                  (resumable)                     new tools here at runtime

Planner. A separate LLM call with its own prompt, a 512-token cap and one job: return a JSON list of concrete subtasks. It is a soft dependency; if the endpoint fails or returns malformed JSON, the whole goal runs as a single task.

Executor. A ReAct loop. Every request carries the conversation and every tool schema; tool calls are executed and their output is fed back as observations. When the model answers without calling a tool, the task is done. A cap of 30 iterations stops a confused model from looping forever.

Tool registry. aura/tools/ is a plugin package. On first use AURA scans it, imports each module, and registers any TOOL_DEFS schema whose function exists. Adding a tool means dropping in one file; there is no central list to edit. Tools whose optional dependencies are missing are skipped, so a core install still works.

Desktop perception. desktop_read_screen screenshots the display and runs it through the native Windows OCR engine, returning every visible line of text with its pixel centroid. The model reads that map and clicks by coordinates. OCR is local and free, so most perception costs no tokens; desktop_analyze_screen sends a screenshot to a vision model only when the screen is graphical.

Watch-and-learn. aura learn "<goal>" records your clicks and keystrokes with timestamps plus before and after screenshots. A vision model turns the trace into a Python module with a tool schema and a function, which is saved to ~/.aura/tools/ and registered on the spot. The four tools in aura/tools/ for Bitcoin prices, JioHotstar, Hugging Face search and YouTube ad skipping were generated this way.

Safety. With safe mode on, file writes and shell commands show a confirmation panel first. Deletes, rm, sudo, chmod, shutdown, git push and package installs always ask, even with safe mode off. Routine mouse and keyboard actions are auto-approved so a 30-click task stays usable.

Resilience. LLM calls retry up to 3 times with 5 and 10 second backoff on 5xx errors, timeouts and dropped connections, and fail fast on errors that a retry cannot fix, such as a bad key. Sessions are written to disk after every message, so an interrupted run can be resumed with /resume.


Tools

Area Tools Install extra
Shell bash core
Files read_file, write_file, patch_file, list_dir, delete_file core
Web web_search, web_fetch core
Browser (Playwright) browser_navigate, browser_click, browser_fill, browser_get_text, browser_screenshot browser
Desktop desktop_click, desktop_move_mouse, desktop_type, desktop_press, desktop_scroll, desktop_get_position, desktop_read_screen, desktop_find_text, desktop_analyze_screen desktop
Gmail gmail_send, gmail_read_inbox google
Google Calendar calendar_list_events, calendar_add_event, calendar_delete_event google
Google Meet meet_create (creates the Meet, the calendar event and emails the link in one call) google
Google Forms forms_load_profile, forms_update_profile, forms_generate_prefill_url google
Learned by watching check_bitcoin_price_coinmarketcap, jiohotstar_play, search_bloom_model_huggingface, skip_youtube_ads desktop

Extras combine: pip install "aura-autonomous-agent[desktop,google]". The voice extra adds /voice speech input and spoken notifications; all installs everything.


Python library

from aura import Agent

agent = Agent(
    api_key="sk-...",                       # or INFERX_API_KEY
    base_url="https://api.openai.com/v1",   # any OpenAI-compatible endpoint
    model="gpt-4o-mini",
    verbose=False,                          # no terminal output
    approve=lambda action, detail: False,   # decline risky actions instead of prompting
)

print(agent.plan("set up a FastAPI project with tests"))   # just the plan
result = agent.run("set up a FastAPI project with tests")  # plan and execute

Add your own tools. Any function becomes a tool; the schema is built from its signature and docstring.

@agent.add_tool
def get_order_status(order_id: str) -> str:
    """Look up an order's shipping status."""
    return orders.status(order_id)

agent.run("has order 1042 shipped yet?")
Agent(...) option Default Purpose
api_key, base_url, model from environment LLM endpoint
plan True False runs the goal as a single task without the planner
max_iterations 30 Executor loop cap per task
safe_mode AURA_SAFE_MODE Ask before writes and shell commands
approve interactive prompt callback(action, detail) -> bool for scripts with no terminal
verbose True Rich terminal output
session_id new session Resume a saved session
client built for you Inject your own OpenAI-compatible client

agent.tools lists every available tool name. Importing aura never needs an API key; creating an Agent without one raises aura.ConfigError with setup instructions.


CLI

Command What it does
aura run Interactive session in the current directory
aura run "<goal>" Run one goal and exit
aura learn "<goal>" Record a workflow and generate a new tool from it
aura version Show the version

Inside a session:

Command What it does
/voice Speak the next goal instead of typing it
/learn <goal> Record a workflow and generate a new tool
/tools List available tools
/sessions List past sessions
/resume Resume a previous session
/clear Clear the conversation
/cwd Show the working directory
/help Show all commands
/exit Quit

Configuration

Settings come from environment variables or a .env file, read from the current directory, then ~/.aura/.env, then the source checkout.

Variable Default Purpose
INFERX_BASE_URL https://api.openai.com/v1 OpenAI-compatible endpoint
INFERX_API_KEY required API key
INFERX_MODEL gemma-4-31b Model name
AURA_SAFE_MODE true Ask before writes and shell commands
AURA_HOME ~/.aura Sessions, learned tools, Google credentials and the form profile
AURA_CHROME_PROFILE your OS's Chrome profile Profile used by the browser tools
AURA_USER_NAME none Name used in the spoken "task completed" message

Google tools. Create an OAuth client (Desktop app) in Google Cloud with the Gmail and Calendar APIs enabled and save it as ~/.aura/credentials.json. The first Google tool call opens a browser to sign in and stores token.json next to it.


Install from source

git clone https://github.com/abhishek-pandey7/AURA-Automated-Realtime-Assistant
cd AURA-Automated-Realtime-Assistant
cp .env.example .env

bash install.sh          # macOS / Linux
install.bat              # Windows

Or manually:

python -m venv .venv
source .venv/bin/activate          # Windows: .venv\Scripts\activate
pip install -e ".[all,dev]"
playwright install chromium

Platform notes

  • Screen OCR (desktop_read_screen, desktop_find_text) uses the Windows OCR engine and is Windows only. Mouse and keyboard control work on Windows, macOS and Linux.
  • macOS: /voice needs brew install portaudio flac. On Apple Silicon, SpeechRecognition ships an x86 flac; replace it with the native one:
    cp /opt/homebrew/bin/flac "$(python -c 'import speech_recognition, os; print(os.path.dirname(speech_recognition.__file__))')/flac-mac"
    
  • Windows: if pyaudio has no wheel for your Python, run pip install pipwin and then pipwin install pyaudio.

Project structure

aura/
  agent.py        Agent class and the ReAct executor loop
  planner.py      Goal to subtask planner
  tools/          Plugin registry and every built-in tool, one module per area
  learning.py     Watch-and-learn recorder and tool generator
  confirm.py      Human-in-the-loop confirmation gate
  memory.py       Session persistence and resume
  config.py       Settings, .env loading and data paths
  ui.py           Interactive terminal session
  cli.py          `aura` command entry point
tests/
  test_library.py   Library API tests against a fake LLM client (no key needed)
  test_tools.py     Tool checks for shell, files, web, config and memory
  test_endpoint.py  Connectivity check for your LLM endpoint

Testing

pytest tests/test_library.py     # no API key or network needed
python tests/test_tools.py       # tool checks
python tests/test_endpoint.py    # checks your configured endpoint

Roadmap

  • Learned tools that locate targets with OCR instead of fixed coordinates, so they survive layout changes
  • Long-term memory across sessions with vector search
  • Context compaction for long multi-step runs
  • Sandboxed execution in a container or virtual desktop for unattended use
  • A web dashboard to watch runs and approve actions remotely

Authors

Built by Abhishek Pandey.

License

MIT

Metadata

Release files for aura-autonomous-agent 0.2.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for aura-autonomous-agent 0.2.1
File Size Uploaded Provenance Actions
aura_autonomous_agent-0.2.1.tar.gz 56.4 kB Without provenance Details for aura_autonomous_agent-0.2.1.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for aura-autonomous-agent 0.2.1
File Interpreter ABI Platform Actions
aura_autonomous_agent-0.2.1-py3-none-any.whl Python 3 none any Details for aura_autonomous_agent-0.2.1-py3-none-any.whl

Total release size: 110.1 kB

Release files / aura_autonomous_agent-0.2.1.tar.gz

Download URL aura_autonomous_agent-0.2.1.tar.gz
Size 56.4 kB
Tags Source
SHA-256 checksum
How to use checksums
b3e3132f353109cf933b3376458d639206302306bd561b74958b0716a7632383
BLAKE2b-256 checksum
How to use checksums
6b9aec40e90dd41b5ba068c41a0f1cd16892cb1511344749cdb1ab175aa0196b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.10

Release files / aura_autonomous_agent-0.2.1-py3-none-any.whl

Download URL aura_autonomous_agent-0.2.1-py3-none-any.whl
Size 53.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
06d00f4755238cd39e0a17a613162e2d2c0955b5133263fa7eccaba484611d00
BLAKE2b-256 checksum
How to use checksums
e5a760603c73952e4dd0141323cd982c7bac1e0dd8026346ca2e5d3f29bc5ae5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.10

Security for aura-autonomous-agent 0.2.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.2.1 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page