Overview
This documentation is a reference documentation for developers creating extensions for Picteus. Picteus extensions enable you to extend the application's capabilities with custom image processing algorithms, automated tagging and feature extraction, interactive user interfaces, external tool integrations, and custom workflow commands.
Picteus provides first-class SDKs for TypeScript / Node.js and Python. Both runtimes share the same underlying architecture, lifecycle, event system, and intent-driven communication model.
Extension anatomy: what you need to build an extension
To build a Picteus extension, you need two fundamental components:
- a manifest file
manifest.json: this JSON file defines all contracts between your extension and the application. It declares metadata, required execution runtimes, subscribed event topics, registered UI commands, user-configurable settings schemas, and UI fragment integrations. - an extension class: an implementation class written in TypeScript or Python that inherits from the base
PicteusExtensionclass provided by the SDK. This class overloads lifecycle hooks (initialize,onReady,onTerminate) and event handlers (onImagesCommand,onImageCreated, etc.) to execute your custom business logic.
Language & runtime
Picteus extensions can be developed either in TypeScript (or vanilla JavaScript) or in Python. Picteus provides an official SDK for each language and hosts dedicated execution runtimes for both platforms:
- Node.js v24.16.0: the Node.js runtime comes directly from the embedded Electron runtime, which prevents having to download a dedicated Node.js binary. The
npmpackage manager is automatically installed and managed by Picteus ; - Python v3.11.14: a dedicated Python environment managed by Picteus.
Runtime isolation & storage location
These runtimes are downloaded and installed on demand when required. They do not interfere with the host Operating System, as they are fully isolated in a dedicated directory to prevent any side effects or package conflicts.
The necessary runtimes are installed in the runtimes directory inside the application folder:
- Windows:
C:\Users\<user>\AppData\Roaming\Picteus\runtimes(where application directory isC:\Users\<user>\AppData\Roaming\Picteus) ; - macOS:
/Users/<user>/Library/Application Support/Picteus/runtimes(where application directory is/Users/<user>/Library/Application Support/Picteus) ; - Linux:
/home/<user>/.config/Picteus/runtimes(where application directory is/home/<user>/.config/Picteus),
where <user> represents the current user's login.
Public SDK packages & OpenAPI clients
The Picteus extension SDKs are published as open-source, public packages:
| Platform | Extension SDK Package |
|---|---|
| Node.js / TypeScript | @picteus/extension-sdk |
| Python | picteus-extension-sdk |
Embedded back-end OpenAPI client
Each SDK embeds the corresponding typed back-end web services client library, see Web services API for comprehensive information about the underlying web services.
The extension manifest — manifest.json
Every extension must include a manifest.json file in its root directory. This manifest acts as the formal contract between the application and the extension, declaring metadata, runtimes, instructions, event subscriptions, commands, settings schema, and user interface elements.
See the dedicated Manifest reference documentation for the complete manifest schema, key sections, and detailed properties breakdown.
The PicteusExtension base class
Every Picteus extension must define an implementation class inheriting from the PicteusExtension base class provided by the official SDK. See the dedicated Class reference documentation for the full class hierarchy, lifecycle methods, event routing, helper APIs, and error handling.
Interacting with the back-end REST API
Picteus extension SDKs embed the entirety of the back-end REST API, completely generated from OpenAPI specifications. When an extension runs, the PicteusExtension base class automatically initializes all REST clients with the server's base URL and authentication credentials, requiring zero manual HTTP configuration.
See the dedicated API reference documentation for the full list of available API clients, capabilities, and usage examples in TypeScript and Python.
Image features
Features attached to an image describe information extracted from or computed about that image.
-
Vectorial features store this information in formats suited to machine processing, indexing, comparison, and search.
-
UI features provide the complementary presentation model used to display that information in the Picteus front-end. They describe the visual elements, grouping, and layout rather than replacing the underlying feature values. See the ViewKit overview for the visual grammar used to define these UI features.
For comprehensive documentation about image features, including their role and storage formats, see the Features documentation.