DRONEBY CETMIX

Open sourceAGPL-3Odoo module

Hand long jobs to a drone. Keep your Odoo workers free.

Cetmix Drone lets any Odoo module offload long-running work to external workers and get the result back through a callback. Free and open source under AGPL-3. A commercial licence is there if you need one.

Sheet 01 — Job flowOdoo → controller → drone → callback
ODOOyour modulejob rowCONTROLLERskills · capacitydrone-01drone-02drone-03callback ◂ result

Sheet 02 — Overview

Long-running work must not hold an Odoo worker.

Drones are external workers. Your module hands the job over and gets the result back through a callback method. It does not own transport, authentication, controller selection, heartbeat or timeout.

  1. Odoo module
  2. Job row
  3. Controller
  4. Drone
  5. Callback

Designed for

  • 01

    AI agents

  • 02

    Document processing

  • 03

    Heavy calculations

  • 04

    Long-running requests

  • 05

    External integrations

Write drones in any language.

A drone is an external worker, so it is not tied to Python. Use Python, Go, Rust or any other language, whichever gives the job the performance it needs.

  • Python
  • JavaScript
  • Go
  • Rust
  • Any other language

One job, from request to callback

  1. 01

    Create the job

    Your module writes the job row in its own transaction. Nothing is sent yet.

    caller transaction
  2. 02

    Submit after commit

    The job is submitted only once the transaction commits. A rolled back transaction never starts real work.

    commit hook
  3. 03

    Pick a controller

    A healthy controller with free capacity that offers the required skill is selected. If none is available, behaviour is configurable.

    capacity · health · skills
  4. 04

    Run on the drone

    The payload travels encrypted and authenticated. The module includes SSH command execution on external drones.

    encrypted payload
  5. 05

    Watch it

    Heartbeats, polling, timeouts, retries and cancellation are handled for you, not by your module.

    heartbeat · poll · timeout
  6. 06

    Get the callback

    The result arrives at a callback method in your module. The outcome is tracked on the job.

    callback method

Two calls in your module

Launch the job with a skill and a callback. Handle the result when it comes back.

01 — Launch
job = record.launch_drone(
    "my_skill",
    record._on_my_task_done,
    {"example": "value"},
    drone_timeout=600,
)
02 — Callback
def _on_my_task_done(self, drone_job, result):
    ...
    return True

Three records to know

  • Controllers

    External services that run the work. Each has authentication, encryption, a capacity limit and health monitoring.

  • Skills

    What a controller can do. Jobs ask for a skill and are routed to a controller that offers it.

  • Jobs

    One row per unit of work, with status, result, retries and cancellation. Reconciled by nonce, fenced before failover.

What it guarantees

  • Committed first

    The job row is created in the caller's transaction and submitted only after commit.

  • Never twice

    Ambiguous submissions are reconciled by nonce and fenced before any failover, so the same work never runs on two controllers.

  • Observed

    Heartbeats, polling, timeouts, retries and cancellation are handled for you.

  • Controlled

    Controllers and skills carry capacity limits, health monitoring, authentication and encryption.

Sheet 03 — Pricing

Free under AGPL-3. Buy a licence only if you need one.

The code is open source and free to run. A commercial licence is for projects that cannot comply with AGPL-3. Pay once per Odoo database, keep it for life.

  • Community

    FreeAGPL-3

    Open source

    • Full source on GitHub
    • Also on the Odoo App Store
    • Use, study and modify
    Get it free
  • Commercial · single

    €10one-off · excl. VAT

    1 Odoo database

    • Lifetime licence for 1 database
    • Covers all Odoo versions
    Buy licence
  • Commercial · ten-pack

    €80one-off · €8 per database · excl. VAT

    10 Odoo databases

    • Lifetime licences for 10 databases
    • Covers all Odoo versions
    Buy licence

Staging and demo databases don't count, if they are neutralized or loaded with demo data.

About the licence

Is Cetmix Drone free?
Yes. It is open source under AGPL-3. Download it from GitHub or the Odoo App Store at no cost.
When do I need a commercial licence?
When your project cannot be released under AGPL-3 terms. Tell us the setup if you are unsure.
Do staging and demo databases need a licence?
No. They do not count, as long as they are neutralized or demo data is loaded.
What does a commercial licence cover?
One Odoo database, for life, on any Odoo version. Buy it here on this site.

Free to download from GitHub or the Odoo App Store.

The module sits in the root of cetmix/cetmix-tower, under AGPL-3. Configuration, API and security are documented with it.

Sheet 04 — Contact

Talk to an engineer.

Tell us what you want to move out of Odoo. We reply with a specific answer.

Message us on WhatsApp

We use your details only to reply to this request.