SDK and CLI for building Horizon Desk AI Plugins
Project description
Horizon Desk SDK v1.3.0 🚀
The official Python SDK for building, testing, and publishing plugins for Horizon Desk.
What's New in v1.3.0
- Externally Hosted Plugins: Support for plugins hosted on custom local ports (e.g., Flask, Django backends) using the
hosted_urlmanifest field. - Package Renaming: The SDK is now officially
horizondesk_sdk. - Strict Navigation Policy: Built-in support for the new Horizon Desk security model which forces external links to the system browser.
Installation
pip install horizondesk_sdk
Quick Start
-
Initialize:
horizondesk_sdk init MyPlugin
-
Develop: Edit
main.pyand add your tools. UseHorizonPluginto register them. -
Link UI: Set
custom_ui=Trueand provide acustom_ui_path(for static HTML) orhosted_url(for Flask/Django).
CLI Command Reference
Execute commands using horizondesk_sdk <command>.
| Command | Arguments | Description |
|---|---|---|
init |
<name> |
Scaffolds a new plugin directory with a template. |
run |
<file.raf> |
Launches the Workshop GUI to visually debug your plugin. |
test |
[--prompt] |
Runs a rapid CLI test using a MockAgent. |
install |
— | Installs the current plugin into the local Horizon Desk app. |
login |
— | Authenticates your workstation with the Rapnss Store. |
logout |
— | Clears local authentication credentials. |
whoami |
— | Displays current developer profile and ad balance. |
publish |
— | Packages and uploads your plugin to the Horizon Store. |
status |
— | Lists your published plugins and their approval status. |
Manifest Reference (horizon_plugin.raf)
The .raf file is a JSON manifest that defines your plugin's identity and capabilities.
| Field | Type | Required | Description |
|---|---|---|---|
name |
string |
Yes | The unique name of your plugin (PascalCase preferred). |
version |
string |
Yes | Semantic version (e.g., "1.3.0"). |
developer |
string |
Yes | Your developer name or handle. |
description |
string |
Yes | A short summary of what the plugin does. |
entry_point |
string |
Yes | The main Python file (usually "main.py"). |
category |
string |
No | general, utilities, productivity, creative, system. |
custom_ui |
boolean |
No | Set to true to enable a sidebar tab. |
custom_ui_path |
string |
No | Relative path to the folder containing index.html. |
hosted_url |
string |
No | (New in v1.3.0) Local URL for Flask/Django UIs (e.g. http://localhost:5000). |
icon |
string |
No | Relative path to a 128x128 PNG sidebar icon. |
Security & Best Practices
- SecretStorage: Never hardcode API keys. Use
SecretStorage.get_secret("MY_KEY"). - PII Redaction: Use
SecretStorage.redact_pii(text)to sanitize data before sending to external LLMs. - Timeouts: Always use
timeout=in network requests (e.g.,requests.get(url, timeout=10)).
Support
- Issues: GitHub Issues
- Developer Portal: horizon.rapnss.in/dev
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
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 horizondesk_sdk-1.4.0.tar.gz.
File metadata
- Download URL: horizondesk_sdk-1.4.0.tar.gz
- Upload date:
- Size: 15.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6c4deb83ea26930bcc639528cb113b30f8ee272a52ef83398ef11694d719e30d
|
|
| MD5 |
2f8382d2ed8b0157bf57888a56360a9b
|
|
| BLAKE2b-256 |
afda7b4a7512ead6758193fdf93403ee4a0a0ab283573e64229ac537fe4a1a43
|
File details
Details for the file horizondesk_sdk-1.4.0-py3-none-any.whl.
File metadata
- Download URL: horizondesk_sdk-1.4.0-py3-none-any.whl
- Upload date:
- Size: 15.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2ffbca1ffe66f5684e7de1c08aaec7b5df10c0f0c835fa017a371eb9cf01682e
|
|
| MD5 |
330c022b06034baaf39fef4d430819ec
|
|
| BLAKE2b-256 |
bb8c66fb05ae0d4ff4f041919796f354ddb2c5855e7685af3ec03df29ec114db
|