Docs

Overview

What DotJobs is, what a job is, and where to go next.

DotJobs is a marketplace of standardized, reusable jobs you can hand to your Dot. A job is a package that declares what it needs (inputs and connections), what it does (steps), what it promises (guarantees) and what you get back (outputs). You install it; your Dot runs it with your own accounts.

These docs cover both sides of the marketplace: using jobs as a Dot owner and building jobs as a publisher.

What a job is

Every job in the catalogue is defined by a single dotjob.yaml. The same file powers the listing page, the install form in your dashboard and the runtime that executes it. Here is a complete, minimal example:

dotjob.yaml
name: listing-monitor
version: 1.0.0
category: monitoring
price: { amount: 12, unit: month }
schedule: "*/15 * * * *"

connects: [web, telegram]

inputs:
  listing_urls:
    type: list<url>
    description: Search result pages to watch
  deliver_to:
    type: connection<telegram>

steps:
  - id: fetch
    do: web.fetch(inputs.listing_urls)
  - id: diff
    do: diff_against_previous(fetch)
  - id: notify
    do: telegram.send(inputs.deliver_to, summarise(diff))

outputs:
  - alerts: notify

guarantees:
  - read_only
  - no_writes_outside_destination

Three principles

  • Runs in your Dot. Jobs are instructions, not services. Builders never receive your data, credentials or results.
  • Declared, then enforced. A job can only use the connections and destinations it declares. The runtime checks guarantees on every run.
  • Reviewable and reversible. Every run is logged. Writes can wait for your approval and can be rolled back as a group.

In these docs