- π Plugin System - Automatic plugin discovery from the
plugins/directory usingpyproject.tomlmetadata - π¦ Isolated Environments - Each plugin runs in its own UV-managed virtual environment with independent dependencies
- π¨ Modern UI - Clean, responsive interface built with Qt Quick/QML featuring Catppuccin color scheme
- π Search & Filter - Real-time plugin search by name, description, tags, or version
- βοΈ Environment Management - Support for
.envfiles with variable substitution and proxy configuration - π― Font Size Customization - Adjustable font size (1.0x - 2.0x) for plugin descriptions and tags in the UI
- π Privacy-Focused Analytics - Optional PostHog integration with hardware-based UUID (no personal data)
- π¦ Distribution Tools - Built-in script for creating distributable packages with optional 7z compression and encryption
- π Python 3.13 or higher
- π» Windows (primary support), Linux/macOS (experimental)
- β‘ UV package manager (required) - Download
For Windows users, Act-AIO includes pre-packaged binaries for offline installation:
# Clone the repository
git clone https://github.com/player-alex/act-aio.git
cd act-aio
# Run the automated installer
install.batThis will automatically install:
- UV package manager (from
installation/binaries/) - Python 3.13.7 (from
mirror/)
If you don't have UV installed, install it first:
Windows (PowerShell):
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"Linux/macOS:
curl -LsSf https://astral.sh/uv/install.sh | shThen install Act-AIO:
# Clone the repository
git clone https://github.com/player-alex/act-aio.git
cd act-aio
# Install dependencies
uv sync
# Run the application
uv run python -m act_aio.mainuv run python -m act_aio.main- Installing Plugins: Place plugin directories in the
plugins/folder - Plugin Requirements: Each plugin must have a
pyproject.tomlfile with metadata - Import/Export Plugins: Use the top-left button to import or export plugins π₯π€
- Running Plugins: Click on a plugin in the list and press the "Run" button
βΆοΈ - Environment Variables: Click the settings button on the right, then select "Environment Variables" to specify custom environment variables for plugin execution βοΈ
- Font Size Adjustment: In the settings dialog, use the "Font Size" slider to adjust the font size for plugin descriptions and tags (1.0x - 2.0x) π―
- Viewing Documentation: Click the "?" button to view plugin manuals (if available) π
- Opening Plugin Directory: Click the folder icon to open the plugin's directory π
Create a .env file in the root directory to set environment variables:
HTTP_PROXY=http://proxy.example.com:8080
HTTPS_PROXY=http://proxy.example.com:8080
SOME_API_KEY=your_api_key_hereVariables support substitution using ${VARIABLE_NAME} syntax.
For network-restricted environments, configure proxy settings in .env:
HTTP_PROXY=http://your-proxy:port
HTTPS_PROXY=http://your-proxy:portThe application will use these proxy settings for UV package installations.
Important Notes for Plugin Developers:
- UV respects the standard
HTTP_PROXYandHTTPS_PROXYenvironment variables during dependency installation - To disable proxy for specific operations in your plugin, set:
import os os.environ["HTTP_PROXY"] = "" os.environ["HTTPS_PROXY"] = ""
- Remember to restore the original values if needed after disabling
The main application can be configured via the pyproject.toml file in the root directory and settings.json for user preferences.
You can customize the application's main window title by setting the title property in the [project] section of pyproject.toml.
Example:
[project]
name = "act-aio"
version = "0.1.0"
description = "Actions All-In-One - Python Plugin Launcher"
title = "My Custom App Title" # This will be the window titleIf the title property is not set, the application will use a default title.
User preferences are automatically saved to settings.json in the root directory:
- Font Size: Adjustable font size multiplier for plugin descriptions and tags (1.0x - 2.0x)
- Environment Settings: Enabled/disabled state of environment variables from
.env - Proxy Configuration: HTTP/HTTPS proxy settings
Example settings.json:
{
"proxy": "http://proxy.example.com:8080",
"environment_settings": {
"API_KEY": true,
"DEBUG_MODE": false
},
"font_size": 1.25
}Note: The font_size value is validated on load. Invalid values (non-numeric, out of range, NaN) will automatically default to 1.0.
act-aio/
βββ act_aio/
β βββ main.py # Application entry point
β βββ plugin_manager.py # Core plugin management logic
β βββ models.py # QML data models
β βββ qml/
β βββ main.qml # Main application UI
β βββ PluginListItem.qml # Plugin list item component
βββ plugins/ # Plugin directory
βββ fonts/ # Application fonts (Roboto)
βββ credentials/ # Credential storage (gitignored)
βββ create-distribution.py # Distribution package creator
βββ pyproject.toml # Project dependencies and metadata
βββ README.md # This file
Follow these steps to create a new plugin:
cd plugins
mkdir your-plugin-name
cd your-plugin-nameuv initThis creates a basic pyproject.toml and project structure.
Edit pyproject.toml and set the required fields:
[project]
name = "your-plugin-name" # Required: Plugin name
version = "1.0.0" # Required: Version
description = "Your plugin description" # Required: DescriptionThe name in pyproject.toml must follow strict packaging rules (e.g., using hyphens, no special characters). To display a more readable or creative name in the UI, you can add an alias.
If an alias is provided, it will be used throughout the application's UI. If not, the name will be used as a fallback.
[project]
name = "my-super-cool-plugin"
version = "1.0.0"
description = "A plugin with a simple name."
alias = "My Super Cool Plugin β¨" # Optional: A user-friendly display nameAdd optional tags to categorize your plugin in the [project] section:
[project]
name = "your-plugin-name"
version = "1.0.0"
description = "Your plugin description"
tags = ["utility", "automation", "example"] # Optional: Category tagsAvailable Options:
- tags: Array of strings to categorize your plugin (e.g., "utility", "data-processing", "automation")
To add documentation accessible via the "?" button:
-
Create a
manuals/directory inside your plugin folder:mkdir manuals
-
Add documentation files of any format:
# Example files: # manuals/user-guide.md # manuals/api-reference.txt # manuals/tutorial.pdf # manuals/config-example.json
Note: Act-AIO automatically detects all files in the manuals/ directory, regardless of format (.md, .txt, .pdf, .json, etc.). You don't need to list them in pyproject.toml. The manual files will be accessible via the "?" button in the plugin list.
By default, Act-AIO launches plugins using uv run main.py. However, you can define a custom execution command in pyproject.toml using the exec field under the [project] section.
Simple Cross-Platform Command:
[project]
name = "my-plugin"
version = "1.0.0"
exec = "python custom_launcher.py"Platform-Specific Commands:
[project]
name = "my-plugin"
version = "1.0.0"
exec = { win32 = "cmd /c custom.bat", posix = "./custom.sh" }Features:
- β¨ Macro Substitution: Use macros like
${PLUGIN_DIR},${ENV:VAR_NAME}in your commands - π Automatic Fallback: If
execis not defined or no platform-specific command is found, defaults touv run main.py - π Environment Variables: All configured environment variables are passed to custom commands
β οΈ Error Handling: On Windows, the console pauses on errors automatically
Example with Macros:
[project]
name = "my-plugin"
exec = "python ${PLUGIN_DIR}/scripts/launcher.py --env ${ENV:MY_VAR}"[project]
name = "my-awesome-plugin"
alias = "My Awesome Plugin"
version = "1.0.0"
description = "An awesome plugin for Act-AIO"
requires-python = ">=3.13"
tags = ["utility", "web", "automation"]
dependencies = [
"requests>=2.31.0",
]
# Optional: Custom execution command
exec = "python custom_launcher.py"Create main.py with your plugin's main logic:
def main():
print("Hello from your plugin!")
if __name__ == "__main__":
main()your-plugin/
βββ pyproject.toml # Required: Plugin metadata
βββ main.py # Required: Plugin entry point
βββ manuals/ # Optional: Documentation files
β βββ user-guide.md
β βββ api-reference.md
βββ .venv/ # Auto-created by Act-AIO
Plugins can include command snippets, which are simple scripts that can be executed from the UI. They are defined in .yaml files located in a snippets/commands directory within your plugin.
Directory Structure:
your-plugin/
βββ snippets/
βββ commands/
βββ my-command.yaml
Snippet Format:
Each .yaml file must contain name, description, and command.
# my-command.yaml
name: Open Downloads Folder
description: Opens the user's Downloads folder in the explorer.
command: start explorer "${ENV:USERPROFILE}\Downloads"Macros:
You can use macros to make commands more flexible:
${PLUGIN_DIR}: The root directory of the plugin.${CURRENT_DIR}: The directory containing the snippet file (.../snippets/commands).${ENV:VAR_NAME}: The value of an environment variable.
Use the included create-distribution.py script to create distributable packages:
python create-distribution.pyThe script will:
- β
Create a
dist/directory with files based on.dist.rules - ποΈ Optionally compress to a 7z archive
- π Optionally encrypt with AES-256 and filename encryption
Edit .dist.rules to customize what gets included in distributions:
INCLUDE:
act_aio/
plugins/
fonts/
README.md
EXCLUDE_NAMES:
__pycache__
.git
EXCLUDE_PREFIXES:
.
EXCLUDE_SUFFIXES:
.pyc
.log
Act-AIO uses PostHog for optional usage analytics:
- π Hardware UUID: Generated from CPU/motherboard information (no personal data)
- π« Opt-out: Set
POSTHOG_DEBUG=1environment variable to disable - π Data Collected: Plugin launches, application starts (anonymous)
# Enable PostHog debug mode
POSTHOG_DEBUG=1 uv run python -m act_aio.main- π Python: Follow PEP 8
- π¨ QML: Use Qt Quick best practices
- π€ Type hints: Encouraged for Python code
| Technology | Purpose | Version |
|---|---|---|
| Python | Core language | 3.13+ |
| Qt6/PySide6 | GUI framework | - |
| UV | Package manager | - |
| py7zr | Archive creation | - |
| PostHog | Analytics | - |
- PySide6: Qt6 Python bindings for GUI
- py7zr: 7z archive creation with encryption support
- posthog: Analytics library
- tomli: TOML parsing (Python < 3.11)
- UV: Fast Python package installer
π« Application won't start
- β Ensure Python 3.13+ is installed
- β
Check that all dependencies are installed:
uv sync - β
Verify
.envfile exists (or create an empty one if needed) - β
Try running with debug mode:
POSTHOG_DEBUG=1 uv run python -m act_aio.main
β Plugin won't launch
- β
Verify plugin has
main.pyfile - β
Check plugin's
pyproject.tomlis valid - β Look for error messages in the console
π Proxy issues
- β
Verify
HTTP_PROXYandHTTPS_PROXYin.envare correct - β Check proxy allows HTTPS connections
- β Try running without proxy temporarily (set to empty string "")
- PySide6
6.10.0: There is a known bug in this version that may cause unexpected behavior on Windows 11 (x64). If you encounter UI-related problems, consider using a different version. (Reported: 2025-10-16)
This project is licensed under the MIT License - see the LICENSE file for details.