Skip to main content

An SDK for browser automation, workflow recording, and skill execution with MCP integration (macOS only)

Project description

Sisypho SDK

License: GPL v3 Python Platform

A powerful automation SDK for macOS that enables seamless workflow recording, skill execution, and intelligent task automation through desktop accessibility APIs and browser integration.

Table of Contents

Features

๐Ÿ–ฅ๏ธ Desktop Automation

  • Native macOS accessibility API integration
  • System-wide UI element interaction
  • Window management and application control
  • Event recording and playback

๐ŸŒ Browser Automation

  • Playwright integration with user's Chrome installation
  • Seamless access to saved passwords, cache, and browsing history
  • Robust Chrome profile management
  • Cross-browser compatibility

๐Ÿ“ Workflow Recording & Playback

  • Real-time action recording for both desktop and browser
  • JSON-based workflow serialization
  • Intelligent skill generation from recorded actions
  • Automated workflow optimization

๐Ÿค– Agentic AI Integration

  • MCP (Model Context Protocol) server support
  • LLM-powered task execution
  • Intelligent workflow generation from natural language
  • Adaptive skill execution with error handling

๐Ÿ”ง Developer-Friendly

  • Clean Python API with type hints
  • Comprehensive CLI interface
  • Modular architecture for easy extension
  • Rich debugging and logging capabilities

Architecture

Sisypho SDK follows a modular architecture designed for flexibility and extensibility:

sisypho/
โ”œโ”€โ”€ corelib/           # Core automation utilities
โ”‚   โ”œโ”€โ”€ browser.py     # Playwright browser management
โ”‚   โ”œโ”€โ”€ os_utils.py    # macOS system utilities
โ”‚   โ””โ”€โ”€ user.py        # User interaction helpers
โ”œโ”€โ”€ execution/         # Workflow execution engine
โ”‚   โ”œโ”€โ”€ recording.py   # Action recording system
โ”‚   โ””โ”€โ”€ skill.py       # Skill execution framework
โ”œโ”€โ”€ integrations/      # Platform-specific integrations
โ”‚   โ”œโ”€โ”€ macos/         # macOS accessibility servers
โ”‚   โ”œโ”€โ”€ chrome/        # Chrome extension bridge
โ”‚   โ””โ”€โ”€ windows/       # Windows support (WIP)
โ”œโ”€โ”€ agentic/           # AI-powered automation
โ”‚   โ”œโ”€โ”€ generator.py   # Workflow generation
โ”‚   โ””โ”€โ”€ tools.py       # MCP tools and verification
โ””โ”€โ”€ cli.py             # Command-line interface

Quick Start

Prerequisites

  • macOS 11.0+ (required)
  • Python 3.12+ (required)
  • Google Chrome (for browser automation)

Installation

pip install sisypho

For detailed installation instructions and troubleshooting, see INSTALL.md.

Basic Usage

import sisypho
from sisypho.utils import RecorderContext

# Record a workflow
with RecorderContext() as recorder:
    print("Recording started... perform your actions")
    # Your automation actions here

recording = recorder.get_recording()
print(f"Recorded {len(recording)} events")

Usage

CLI Interface

Sisypho provides a comprehensive command-line interface for workflow creation and execution:

Create Workflows

# Create a workflow from natural language description
python -m sisypho create --task "open chrome and navigate to github"

# Create with recording enabled
python -m sisypho create --task "fill out contact form" --record

# Specify output file
python -m sisypho create --task "download file from website" --output my_workflow.json

Execute Workflows

# Run a saved workflow
python -m sisypho run --workflow my_workflow.json

# Run in interactive mode
python -m sisypho run --interactive

# Override workflow task
python -m sisypho run --workflow base_workflow.json --task "modified task description"

Desktop Automation

Desktop automation leverages macOS accessibility APIs for system-wide control:

from sisypho.corelib import os_utils

# System interaction examples
os_utils.click_element("button_name")
os_utils.type_text("Hello, World!")
os_utils.press_key("return")

# Window management
os_utils.activate_application("Safari")
os_utils.get_active_window_info()

Browser Automation

Browser automation uses Playwright with your existing Chrome installation:

from sisypho.corelib import browser

# Initialize browser with user profile
browser.initialize()

# Navigate and interact
page = browser.get_page()
page.goto("https://example.com")
page.click("button[type='submit']")
page.fill("input[name='email']", "user@example.com")

# Cleanup
browser.cleanup()

Workflow Recording

Record user actions for later playback and analysis:

from sisypho.utils import RecorderContext
from sisypho.execution.recording import save_recording

with RecorderContext() as recorder:
    # Perform manual actions - they will be recorded
    pass

# Save the recording
recording = recorder.get_recording()
save_recording(recording, "my_workflow.jsonl")

Skill Execution

Execute pre-defined or generated skills:

from sisypho.execution.skill import SkillExecutor

executor = SkillExecutor()

# Load and execute a skill from file
skill_code = executor.load_skill_from_file("path/to/skill.py")
result = executor.execute_skill(skill_code)

if result.success:
    print("Skill executed successfully")
else:
    print(f"Execution failed: {result.error}")

MCP Integration

Integrate with MCP servers for enhanced AI capabilities:

from sisypho.agentic.tools import server
from sisypho.agentic.generator import WorkflowGenerator

# Use MCP tools for skill verification
@server.tool()
def verify_skill_draft(skill_code: str) -> dict:
    """Verify a skill draft using mypy type checking."""
    # Implementation handled by the framework
    pass

# Generate workflows from natural language
generator = WorkflowGenerator()
workflow = generator.generate_from_description("automate daily standup process")

API Reference

Core Modules

sisypho.corelib.browser

  • initialize() - Initialize browser with user profile
  • get_page() - Get the current browser page
  • cleanup() - Clean up browser resources

sisypho.corelib.os_utils

  • click_element(element_name) - Click UI element by name
  • type_text(text) - Type text at current cursor position
  • press_key(key) - Press keyboard key
  • activate_application(app_name) - Bring application to foreground

sisypho.execution.skill

  • SkillExecutor - Main class for skill execution
  • load_skill_from_file(path) - Load skill from Python file
  • execute_skill(code) - Execute skill code

sisypho.utils

  • RecorderContext - Context manager for recording actions

Chrome Extension

Install the Sisypho Chrome Extension to enable browser action recording:

Install from Chrome Web Store

The extension enables:

  • Real-time browser action recording
  • Seamless integration with Sisypho workflows
  • Visual feedback during recording sessions
  • Automatic workflow generation from browser interactions

Examples

Example 1: Automated Web Form Filling

from sisypho.corelib import browser
from sisypho.utils import RecorderContext

with RecorderContext() as recorder:
    browser.initialize()
    page = browser.get_page()
    
    # Navigate to form
    page.goto("https://example.com/contact")
    
    # Fill form fields
    page.fill("#name", "John Doe")
    page.fill("#email", "john@example.com")
    page.fill("#message", "Hello from Sisypho!")
    
    # Submit
    page.click("button[type='submit']")
    
    browser.cleanup()

# Save the recorded workflow
recording = recorder.get_recording()
print(f"Recorded {len(recording)} actions")

Example 2: Desktop Application Automation

from sisypho.corelib import os_utils
from sisypho.utils import RecorderContext

with RecorderContext() as recorder:
    # Open application
    os_utils.activate_application("TextEdit")
    
    # Create new document
    os_utils.press_key("cmd+n")
    
    # Type content
    os_utils.type_text("Automated document creation with Sisypho!")
    
    # Save document
    os_utils.press_key("cmd+s")
    os_utils.type_text("automated_document.txt")
    os_utils.press_key("return")

Example 3: Skill Generation and Execution

from sisypho.agentic.generator import WorkflowGenerator
from sisypho.execution.skill import SkillExecutor

# Generate skill from description
generator = WorkflowGenerator()
skill = generator.generate_from_description(
    "Open Safari, navigate to GitHub, and search for 'sisypho'"
)

# Execute the generated skill
executor = SkillExecutor()
result = executor.execute_skill(skill.code)

if result.success:
    print("Skill executed successfully!")
else:
    print(f"Execution failed: {result.error}")

Contributing

We welcome contributions! Please see our Contributing Guidelines for details.

Development Setup

  1. Clone the repository
  2. Install development dependencies: pip install -e .[dev]
  3. Build platform servers: python -m sisypho.setup_servers
  4. Run tests: pytest

Platform Support

  • macOS: Full support (primary platform)
  • Windows: Work in progress
  • Linux: Not currently supported

License

This project is licensed under the GNU General Public License v3.0 - see the LICENSE file for details.

Contact

  • Primary: satgu7[at]gmail[dot]com
  • Secondary: saumik[dot]13[at]gmail.com

For bug reports and feature requests, please use the GitHub Issues page.


Sisypho SDK - Empowering intelligent automation for the modern workplace.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sisypho-0.1.2.tar.gz (3.6 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sisypho-0.1.2-py3-none-any.whl (3.6 MB view details)

Uploaded Python 3

File details

Details for the file sisypho-0.1.2.tar.gz.

File metadata

  • Download URL: sisypho-0.1.2.tar.gz
  • Upload date:
  • Size: 3.6 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.10

File hashes

Hashes for sisypho-0.1.2.tar.gz
Algorithm Hash digest
SHA256 96c8542963b78e6b7f6463de2dad97d1b36e4d01b5b3fe4cfb808f7cf7f37e9d
MD5 70b8dea8ee759c3069ce163a93deb0d6
BLAKE2b-256 8461646e66522420fcb4b0be3b997d1dad47636f89763a8bb49fbcd2d5838cc5

See more details on using hashes here.

File details

Details for the file sisypho-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: sisypho-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 3.6 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.10

File hashes

Hashes for sisypho-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 4e85d77e8c74e2ed800b52e937d800bb35e136e66cf122a2d201d466f637c90b
MD5 89ff8c1d4cca8ad06ac8b9700a751ccd
BLAKE2b-256 935bb572a793403a9739067d462a9d259ad4e33398c746ae83a7f3a9b12ba543

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page