An SDK for browser automation, workflow recording, and skill execution with MCP integration (macOS only)
Project description
Sisypho SDK
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
- Architecture
- Quick Start
- Installation
- Usage
- API Reference
- Chrome Extension
- Examples
- Contributing
- License
- Contact
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 profileget_page()- Get the current browser pagecleanup()- Clean up browser resources
sisypho.corelib.os_utils
click_element(element_name)- Click UI element by nametype_text(text)- Type text at current cursor positionpress_key(key)- Press keyboard keyactivate_application(app_name)- Bring application to foreground
sisypho.execution.skill
SkillExecutor- Main class for skill executionload_skill_from_file(path)- Load skill from Python fileexecute_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:
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
- Clone the repository
- Install development dependencies:
pip install -e .[dev] - Build platform servers:
python -m sisypho.setup_servers - 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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
96c8542963b78e6b7f6463de2dad97d1b36e4d01b5b3fe4cfb808f7cf7f37e9d
|
|
| MD5 |
70b8dea8ee759c3069ce163a93deb0d6
|
|
| BLAKE2b-256 |
8461646e66522420fcb4b0be3b997d1dad47636f89763a8bb49fbcd2d5838cc5
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4e85d77e8c74e2ed800b52e937d800bb35e136e66cf122a2d201d466f637c90b
|
|
| MD5 |
89ff8c1d4cca8ad06ac8b9700a751ccd
|
|
| BLAKE2b-256 |
935bb572a793403a9739067d462a9d259ad4e33398c746ae83a7f3a9b12ba543
|