# Qontinui
[](https://opensource.org/licenses/MIT)
[](https://www.python.org/downloads/)
[](https://github.com/psf/black)
A Python library for model-based GUI automation with intelligent state management and visual recognition.
## Overview
Qontinui enables building robust GUI automation through:
- **Model-based state management** using [MultiState](https://github.com/jspinak/multistate)
- **Visual recognition** with OpenCV template matching
- **JSON configuration** for defining automation workflows
- **Cross-platform support** (Windows, macOS, Linux)
Qontinui is a Python port of [Brobot](https://github.com/jspinak/brobot), a Java library for GUI automation.
## Installation
### From Source (Development)
```bash
# Clone the repository
git clone https://github.com/yourusername/qontinui.git
cd qontinui
# Install with Poetry
poetry install
# Or with pip
pip install -e .
```
### Dependencies
Qontinui requires:
- **[MultiState](https://github.com/jspinak/multistate)** - Multi-state state management
- **OpenCV** - Image template matching
- **PyAutoGUI/pynput** - Input control
## Quick Start
### JSON Configuration
Create an automation configuration in JSON:
```json
{
"version": "1.0",
"states": [
{
"name": "LoginScreen",
"stateImages": [
{
"imageId": "login_button",
"threshold": 0.9
}
]
}
],
"processes": [
{
"name": "Login",
"actions": [
{
"type": "CLICK",
"target": {"type": "image", "imageId": "login_button"}
},
{
"type": "TYPE",
"text": "username@example.com"
}
]
}
]
}
```
### Python API
```python
from qontinui.json_executor import JSONRunner
# Initialize runner
runner = JSONRunner()
# Load configuration
runner.load_configuration("automation_config.json")
# Execute automation
success = runner.run(monitor_index=0)
```
### Desktop Application
Use [Qontinui Runner](https://github.com/yourusername/qontinui-runner) for a GUI interface to create and run automations.
## Architecture
```
qontinui/
├── src/qontinui/
│ ├── json_executor/ # JSON configuration execution
│ ├── model/ # State, Transition, Image models
│ ├── hal/ # Hardware Abstraction Layer
│ └── multistate_adapter/ # MultiState integration
```
## Features
### Current
- ✅ JSON-based automation configuration
- ✅ Template-based image matching
- ✅ Multi-state state management
- ✅ Process and state machine execution modes
- ✅ Cross-platform input control (PyAutoGUI, pynput)
- ✅ Hardware abstraction layer for multiple backends
### Planned
- 🔄 AI-enhanced visual recognition (SAM, CLIP)
- 🔄 Domain-specific language (DSL)
- 🔄 Advanced Brobot migration tools
- 🔄 Cloud execution via qontinui-web
## Testing
Run the test suite:
```bash
# Run all tests
poetry run pytest
# Run with coverage
poetry run pytest --cov=src/qontinui
# Run specific test file
poetry run pytest tests/json_executor/test_json_runner.py
```
## Contributing
We welcome contributions! Please see [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.
Qontinui is a faithful port of Brobot. When contributing, please preserve Brobot's architecture and behavior.
## Documentation
- **GitHub**: [github.com/yourusername/qontinui](https://github.com/yourusername/qontinui)
- **Issues**: [GitHub Issues](https://github.com/yourusername/qontinui/issues)
- **MultiState Docs**: [jspinak.github.io/multistate](https://jspinak.github.io/multistate/)
## License
MIT License - See [LICENSE](LICENSE) file for details.
## Acknowledgments
- [Brobot](https://github.com/jspinak/brobot) - The original Java library
- [MultiState](https://github.com/jspinak/multistate) - Multi-state state management
- [PyAutoGUI](https://github.com/asweigart/pyautogui) - GUI automation
- [OpenCV](https://opencv.org/) - Computer vision
## Related Projects
- **[qontinui-runner](https://github.com/yourusername/qontinui-runner)** - Desktop application
- **[qontinui-web](https://github.com/yourusername/qontinui-web)** - Web-based configuration editor
- **[multistate](https://github.com/jspinak/multistate)** - State management library
Raw data
{
"_id": null,
"home_page": "https://github.com/your-org/qontinui-core",
"name": "qontinui",
"maintainer": null,
"docs_url": null,
"requires_python": "<3.14,>=3.12",
"maintainer_email": null,
"keywords": "gui, automation, ai, testing, rpa",
"author": "Your Name",
"author_email": "your.email@example.com",
"download_url": "https://files.pythonhosted.org/packages/18/fa/eb05da85ff67c8e12122d341d3b9fed910dccd98c8106a3438f43c2e4e9d/qontinui-0.1.0.tar.gz",
"platform": null,
"description": "# Qontinui\n\n[](https://opensource.org/licenses/MIT)\n[](https://www.python.org/downloads/)\n[](https://github.com/psf/black)\n\nA Python library for model-based GUI automation with intelligent state management and visual recognition.\n\n## Overview\n\nQontinui enables building robust GUI automation through:\n- **Model-based state management** using [MultiState](https://github.com/jspinak/multistate)\n- **Visual recognition** with OpenCV template matching\n- **JSON configuration** for defining automation workflows\n- **Cross-platform support** (Windows, macOS, Linux)\n\nQontinui is a Python port of [Brobot](https://github.com/jspinak/brobot), a Java library for GUI automation.\n\n## Installation\n\n### From Source (Development)\n\n```bash\n# Clone the repository\ngit clone https://github.com/yourusername/qontinui.git\ncd qontinui\n\n# Install with Poetry\npoetry install\n\n# Or with pip\npip install -e .\n```\n\n### Dependencies\n\nQontinui requires:\n- **[MultiState](https://github.com/jspinak/multistate)** - Multi-state state management\n- **OpenCV** - Image template matching\n- **PyAutoGUI/pynput** - Input control\n\n## Quick Start\n\n### JSON Configuration\n\nCreate an automation configuration in JSON:\n\n```json\n{\n \"version\": \"1.0\",\n \"states\": [\n {\n \"name\": \"LoginScreen\",\n \"stateImages\": [\n {\n \"imageId\": \"login_button\",\n \"threshold\": 0.9\n }\n ]\n }\n ],\n \"processes\": [\n {\n \"name\": \"Login\",\n \"actions\": [\n {\n \"type\": \"CLICK\",\n \"target\": {\"type\": \"image\", \"imageId\": \"login_button\"}\n },\n {\n \"type\": \"TYPE\",\n \"text\": \"username@example.com\"\n }\n ]\n }\n ]\n}\n```\n\n### Python API\n\n```python\nfrom qontinui.json_executor import JSONRunner\n\n# Initialize runner\nrunner = JSONRunner()\n\n# Load configuration\nrunner.load_configuration(\"automation_config.json\")\n\n# Execute automation\nsuccess = runner.run(monitor_index=0)\n```\n\n### Desktop Application\n\nUse [Qontinui Runner](https://github.com/yourusername/qontinui-runner) for a GUI interface to create and run automations.\n\n## Architecture\n\n```\nqontinui/\n\u251c\u2500\u2500 src/qontinui/\n\u2502 \u251c\u2500\u2500 json_executor/ # JSON configuration execution\n\u2502 \u251c\u2500\u2500 model/ # State, Transition, Image models\n\u2502 \u251c\u2500\u2500 hal/ # Hardware Abstraction Layer\n\u2502 \u2514\u2500\u2500 multistate_adapter/ # MultiState integration\n```\n\n## Features\n\n### Current\n- \u2705 JSON-based automation configuration\n- \u2705 Template-based image matching\n- \u2705 Multi-state state management\n- \u2705 Process and state machine execution modes\n- \u2705 Cross-platform input control (PyAutoGUI, pynput)\n- \u2705 Hardware abstraction layer for multiple backends\n\n### Planned\n- \ud83d\udd04 AI-enhanced visual recognition (SAM, CLIP)\n- \ud83d\udd04 Domain-specific language (DSL)\n- \ud83d\udd04 Advanced Brobot migration tools\n- \ud83d\udd04 Cloud execution via qontinui-web\n\n## Testing\n\nRun the test suite:\n\n```bash\n# Run all tests\npoetry run pytest\n\n# Run with coverage\npoetry run pytest --cov=src/qontinui\n\n# Run specific test file\npoetry run pytest tests/json_executor/test_json_runner.py\n```\n\n## Contributing\n\nWe welcome contributions! Please see [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.\n\nQontinui is a faithful port of Brobot. When contributing, please preserve Brobot's architecture and behavior.\n\n## Documentation\n\n- **GitHub**: [github.com/yourusername/qontinui](https://github.com/yourusername/qontinui)\n- **Issues**: [GitHub Issues](https://github.com/yourusername/qontinui/issues)\n- **MultiState Docs**: [jspinak.github.io/multistate](https://jspinak.github.io/multistate/)\n\n## License\n\nMIT License - See [LICENSE](LICENSE) file for details.\n\n## Acknowledgments\n\n- [Brobot](https://github.com/jspinak/brobot) - The original Java library\n- [MultiState](https://github.com/jspinak/multistate) - Multi-state state management\n- [PyAutoGUI](https://github.com/asweigart/pyautogui) - GUI automation\n- [OpenCV](https://opencv.org/) - Computer vision\n\n## Related Projects\n\n- **[qontinui-runner](https://github.com/yourusername/qontinui-runner)** - Desktop application\n- **[qontinui-web](https://github.com/yourusername/qontinui-web)** - Web-based configuration editor\n- **[multistate](https://github.com/jspinak/multistate)** - State management library\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Model-based GUI automation with AI-enhanced perception",
"version": "0.1.0",
"project_urls": {
"Documentation": "https://qontinui.github.io",
"Homepage": "https://github.com/your-org/qontinui-core",
"Repository": "https://github.com/your-org/qontinui-core"
},
"split_keywords": [
"gui",
" automation",
" ai",
" testing",
" rpa"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "de8567871e451a6af6b56dc6f4d35080f45c5e3d320e0f7dcc878baf32abc9d2",
"md5": "9db8f9d5ebe0846fca34fce84c771987",
"sha256": "96c234278f1048c09732a2c57f938a2b09f6aad93d664043b88ed025fa797db1"
},
"downloads": -1,
"filename": "qontinui-0.1.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "9db8f9d5ebe0846fca34fce84c771987",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<3.14,>=3.12",
"size": 958579,
"upload_time": "2025-10-11T12:01:29",
"upload_time_iso_8601": "2025-10-11T12:01:29.810616Z",
"url": "https://files.pythonhosted.org/packages/de/85/67871e451a6af6b56dc6f4d35080f45c5e3d320e0f7dcc878baf32abc9d2/qontinui-0.1.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "18faeb05da85ff67c8e12122d341d3b9fed910dccd98c8106a3438f43c2e4e9d",
"md5": "ef687ade37e29b2f1d2e6115b900c460",
"sha256": "85f12ba66cd2f7921d441c8731ea9c271dae9b484ca1812409bf4503bf00c648"
},
"downloads": -1,
"filename": "qontinui-0.1.0.tar.gz",
"has_sig": false,
"md5_digest": "ef687ade37e29b2f1d2e6115b900c460",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<3.14,>=3.12",
"size": 702313,
"upload_time": "2025-10-11T12:01:32",
"upload_time_iso_8601": "2025-10-11T12:01:32.200771Z",
"url": "https://files.pythonhosted.org/packages/18/fa/eb05da85ff67c8e12122d341d3b9fed910dccd98c8106a3438f43c2e4e9d/qontinui-0.1.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-10-11 12:01:32",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "your-org",
"github_project": "qontinui-core",
"github_not_found": true,
"lcname": "qontinui"
}