Skip to main content
Noxus provides a set of core resources that plugins can consume to interact with the platform and external services.

Resource Categories

1. Storage & Artifacts

Plugins can interact with the platform’s Liquid Data storage tiers.
# Accessing files from the context
async def execute(self, inputs, context):
    # Read a file from object storage
    file_content = await context.files.read(inputs['file_id'])
    
    # Save a new artifact
    await context.artifacts.save(
        name="processed_data.csv",
        content=my_csv_string,
        content_type="text/csv"
    )

2. Model Providers

Access the unified AI model interface directly from your plugin nodes.
# Calling an LLM through the platform
response = await context.models.chat(
    provider="openai",
    model="gpt-4o",
    messages=[{"role": "user", "content": "Analyze this data"}]
)

3. Execution Context

Every plugin execution receives a rich RemoteExecutionContext object. This object provides access to the current execution state, configuration, and credentials.

Context Schema

The context object (of type RemoteExecutionContext) contains the following key attributes and methods:
Attribute / MethodTypeDescription
plugin_configdictThe effective configuration for the plugin, including admin and workspace overrides.
integration_credentialsdict[str, dict]A dictionary of credentials for the integrations required by the node.
get_integration_credentials(name)methodHelper method to safely retrieve credentials for a specific integration by its name.
# Using context metadata and credentials
async def execute(self, inputs, context: RemoteExecutionContext):
    # Access plugin-level configuration
    timeout = context.plugin_config.get("api_timeout", 30)
    
    # Retrieve credentials for a specific integration
    creds = context.get_integration_credentials("my-external-service")
    api_key = creds.get("api_key")
    
    # Use credentials in your logic
    async with httpx.AsyncClient() as client:
        response = await client.get(f"{self.config.url}", headers={"X-API-Key": api_key})

Best Practices

Treat storage as external I/O. Use deterministic paths and explicit retention behavior. Always use the platform’s file handling utilities to ensure compatibility across different storage backends.
Prefer provider-agnostic contracts. Keep provider-specific assumptions behind plugin adapters to allow users to switch models easily.
Pass only required context to reduce coupling and accidental data exposure. Use the context object to ensure your plugin respects workspace-level boundaries.
Use retries with backoff for transient external failures and return actionable errors. The platform’s execution engine will handle retries based on your node’s configuration.

Creating Integrations

Build robust connectors to external systems using platform resources.