CLI and Python library for Bloret Launcher API access and plugin development.
Install the package as BLDEV, run the command as BLDEV, and continue importing the Python package as BLAPI for compatibility.
BLCLI and BLAPI remain available as command aliases.
pip install BLDEVOr install from source:
pip install .from BLAPI import Client, request_api, LauncherClient
# Using the Client class
client = Client(base_url="https://api.bloret.com", token="your-token")
response = client.request("GET", "/v1/games")
# Using the convenience function
response = request_api("GET", "/v1/games", token="your-token")After installation, use the BLDEV command:
# Make a GET request
BLDEV get /v1/games
# Make a POST request with data
BLDEV post /v1/games --data '{"name": "New Game"}'
# Specify a custom base URL and token
BLDEV --base-url https://api.bloret.com --token your-token get /v1/games
# Save output to a file
BLDEV get /v1/games --output games.jsonCompatibility aliases:
BLCLI --help
BLAPI --helpget- Make a GET request to an endpointpost- Make a POST request to an endpointput- Make a PUT request to an endpointdelete- Make a DELETE request to an endpointplugin- Scaffold, validate, inspect, build, install, and develop launcher plugins
BLDEV includes an offline plugin SDK and CLI for Bloret Launcher plugins.
# Create a plugin project
BLDEV plugin init my-plugin --id com.example.my-plugin --template python --non-interactive
# Validate the project (offline)
BLDEV plugin validate my-plugin --strict
# Inspect normalized manifest and high-risk permissions
BLDEV plugin inspect my-plugin
# Build a reproducible ZIP with plugin.json at the archive root
BLDEV plugin build my-plugin -o dist
# Install into the local Bloret Launcher data directory
BLDEV plugin install my-plugin
# or:
BLDEV plugin install my-plugin --data-dir /path/to/Bloret-Launcher-data --force
# Validate, install, and query a running launcher (OAuth only needed for runtime status)
BLDEV plugin dev my-plugin --oauth-name YOUR_APP --oauth-secret YOUR_SECRETSupported templates:
python- Python extension plugin withregister(api)declarative/theme- theme-only declarative pluginnav- QML navigation page pluginagent- Bloriko Agent tool/prompt starter
As a library:
from BLAPI.plugin import (
scaffold_plugin,
validate_project,
inspect_project,
build_plugin,
install_plugin,
find_launcher_data_dir,
)
from BLAPI import LauncherClient
project = scaffold_plugin("my-plugin", "com.example.my-plugin", template="python")
diagnostics = validate_project(project)
archive = build_plugin(project, "dist") # writes dist/{id}-{version}.zip
# or: build_plugin(project, "dist/my-plugin.zip")
install_plugin(project, find_launcher_data_dir() / "Plugin", force=True)
client = LauncherClient(
"http://localhost:25252",
oauth_name="YOUR_APP",
oauth_secret="YOUR_SECRET",
)
print(client.plugin_info("com.example.my-plugin"))Notes:
plugin init/validate/inspect/build|package/installare offline and do not require OAuth setup.plugin packageis an alias ofplugin build.-o distaccepts a directory and writes{id}-{version}.zipinside it (CI-friendly).- Python plugins run in-process with the launcher; permissions are capability checks, not a sandbox.
- ZIP archives must place
plugin.jsonat the root (BLDEVplugin build/packagedoes this automatically). - GitHub Actions example: install BLDEV, run
BLDEV plugin package <plugin> -o dist, upload the ZIP artifact for users or a future plugin store.
--base-url- Base URL for the API (default: https://api.bloret.com)--token- Authorization token for API requests--output,-o- Output file (default: stdout)
To install the package in development mode:
pip install -e .To run tests:
pytestMIT