Skip to content

Repository files navigation

SARM Automation Platform

Python FastAPI Reflex License

AI-powered automation for your entire computer. SARM connects mouse, keyboard, browser, files, Excel, PDF, email, databases, APIs, and AI into a single visual workflow builder — so your whole desktop can run itself.

Architecture

Two deployable units:

Unit Location Purpose
Orchestrator backend/ + frontend/ SaaS web app: users, orgs, billing, workflow definitions, scheduling, dashboards
Automation Agent agent/ Lightweight process running on the target machine; executes mouse/keyboard/window actions received over WebSocket
sarm-platform/
├── backend/        # FastAPI app: API, DB models, services, Celery tasks
├── frontend/       # Reflex app: pages, components, state management
├── agent/          # Desktop automation agent (Phase 6)
├── infra/          # Docker, Nginx, CI/CD configurations
├── docker-compose.yml
├── Makefile
└── ...

Tech Stack

Layer Technology
Frontend Reflex (Python → React/Next.js)
Backend FastAPI + Uvicorn
Database PostgreSQL 16 (async via asyncpg)
Migrations Alembic
Task Queue Celery + Redis (broker/backend)
Auth JWT (access + refresh), OAuth2 (Google/GitHub), TOTP 2FA
Billing Stripe
AI OpenAI, Anthropic, Ollama
Monitoring Flower (Celery), Sentry, structlog
Infrastructure Docker Compose, Nginx

Quick Start

Prerequisites

  • Python 3.12+
  • Docker & Docker Compose (recommended)
  • PostgreSQL 16 + Redis 7 (for local-only dev)

Using Docker (recommended)

cp .env.example .env
# Edit .env — set SECRET_KEY, JWT_SECRET_KEY, POSTGRES_PASSWORD

make dev
# or: docker compose up --build
Service URL
Frontend http://localhost:3000
API http://localhost/api/v1/health
API Docs http://localhost/api/v1/docs
Flower http://localhost:5555

Local Development (without Docker)

Backend:

cd backend
python -m venv .venv && source .venv/bin/activate  # or .venv\Scripts\activate on Windows
pip install -r requirements.txt
alembic upgrade head
make backend
# or: uvicorn app.main:api --reload --host 0.0.0.0 --port 8000

Frontend:

cd frontend
python -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
reflex init
make frontend
# or: reflex run --frontend-port 3000 --backend-port 8000

Development

make test       # Run tests with coverage
make lint       # Lint with ruff
make format     # Format with ruff
make typecheck  # Type-check with mypy
make check      # All of the above
make clean      # Clean cache files

Project Status

Phase Deliverable Status
1 Architecture, folder structure, ERD, tech decisions ✅ Done
2 Project scaffold: Docker, config, logging, DB, bootable apps ✅ Done
3 Database layer: full SQLAlchemy models + Alembic migration 🔜 Next
4 Auth module: register/login/JWT/OAuth/2FA/RBAC ⏳ Pending
5 Workflow engine: cloud-side action execution ⏳ Pending
6 Automation Agent: desktop action executor ⏳ Pending
7 Frontend: dashboard, workflow builder UI, auth pages ⏳ Pending
8 Billing + RBAC + admin panel ⏳ Pending
9 Template library + notification integrations ⏳ Pending
10 Tests, CI/CD, production deployment guide ⏳ Pending

Architecture Rules

  • Each bounded context (identity, billing, automation, execution, collaboration, notification, admin) follows models/ → repository/ → service/ → api/. API routes never touch the DB directly.
  • All new SQLAlchemy models must be imported in backend/alembic/env.py or Alembic autogenerate will silently ignore them.
  • Config only ever comes from app.core.config.settings — never read os.environ directly in application code.
  • Frontend components follow Reflex best practices with stateless presentational components and state classes for logic.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages