Skip to content

Orbit Settings

← All plugins

Define typed settings classes and manage them visually in Orbit panels.

Visit on GitHub
HomepageChangelogPyPI
pip install almasix-orbit-settings
  • Installs—
  • Stars1
Author
Almasix
Orbit versions
0.5
License
MIT
Python
>=3.11
Listed
September 28, 2026
  • settings
  • configuration
  • panel
  • tenancy

What it does

Pair typed almasix.settings.Settings classes with Orbit SettingsPage forms. The plugin registers those pages on your panel, loads and saves through Conduit, encrypts sensitive properties with Almasix Crypt, and respects panel tenancy for tenant-scoped settings.

Install

pip install almasix-settings almasix-orbit-settings
smith migrate
from almasix_orbit_settings import SettingsPlugin

panel.plugin(
    SettingsPlugin.make()
    .navigation_group("Settings")
    .pages([ManageGeneralSettings])
)

Optional Redis repository: pip install almasix-settings[redis].

Full README: almasix-orbit-settings.

Orbit panel showing the General settings page with Site name, active toggle, support email, and timezone

Documentation

View source

Orbit Settings

Manage typed Almasix Settings visually in an Orbit panel.

General settings page in an Orbit panel

General settings form fields General settings page in dark mode

Install

pip install almasix-settings almasix-orbit-settings
smith migrate

Optional Redis store: pip install almasix-settings[redis].

Requires Orbit with Conduit-backed custom pages (Page.get_conduit_host(), shipped in Orbit ≥ the Conduit host pages release).

Define settings

# app/settings/general_settings.py
from almasix.settings import Settings

class GeneralSettings(Settings):
    site_name: str
    site_active: bool

    @classmethod
    def group(cls) -> str:
        return "general"

Seed defaults with smith make:settings-migration / smith settings:migrate.

Settings page

# app/orbit/app/pages/manage_general_settings.py
from almasix.orbit.forms import Form, TextInput, Toggle
from almasix_orbit_settings import SettingsPage
from app.settings.general_settings import GeneralSettings

class ManageGeneralSettings(SettingsPage):
    settings = GeneralSettings
    title = "General"
    slug = "general-settings"

    @classmethod
    def form(cls, form: Form) -> Form:
        return form.schema([
            TextInput.make("site_name").required(),
            Toggle.make("site_active"),
        ])
smith make:orbit-settings-page ManageGeneral --settings=GeneralSettings --panel=app

Register the plugin

from almasix_orbit_settings import SettingsPlugin
from app.orbit.app.pages.manage_general_settings import ManageGeneralSettings

panel.plugin(
    SettingsPlugin.make()
    .navigation_group("Settings")
    .pages([ManageGeneralSettings])
)

Tenancy

Mark a Settings class tenant_scoped = True. The plugin binds Almasix’s tenant resolver to panel.get_tenant() when panel tenancy is enabled. Global defaults apply until a tenant saves its own values.

class BrandingSettings(Settings):
    tenant_scoped = True
    brand_name: str

    @classmethod
    def group(cls) -> str:
        return "branding"

License

MIT

This plugin is maintained by the Orbit team.

How to install and wire a plugin: Using a plugin. Report security issues on theadvisory form.

  • Versioned workflows for forms, approvals, parallel branches, escalation, and signatures.

    • Official
    • Panel kit
    • Dark mode
    • —Installs
    • 1Stars

    AlmasixOrbit 0.5

  • Visually build Orbit forms from every field and layout, then collect answers with handlers.

    • Official
    • Panel kit
    • Dark mode
    • —Installs
    • 1Stars

    AlmasixOrbit 0.5

  • Opinionated Users, Roles, and Permissions UI for Orbit panels, built on almasix-permission.

    • Official
    • Panel kit
    • Authentication
    • Dark mode
    • 135Installs
    • 1Stars

    AlmasixOrbit 0.4