Moteur for agencies

Every client site, one content platform your clients will like.

Model each client’s content once, give their team a Studio they can’t break, and work on it with them, live. Every change is reviewed, bilingual and in Git. You build the site. Moteur keeps the content.

In the Studio, an article is written in French and its English side is empty. One click translates both fields into English, each marked “machine translation, not yet read”. The editor marks the title as right, changes “eight thousand two hundred and forty-three” to “8,243” in the excerpt, and saves.

French and English side by side: one click translates, a person reads, then it’s saved.

What happens when your client hits Save

No plugin, no sync job: three things, every time.

  1. An article open in the Studio, in French and English.An article open in the Studio, in French and English.

    1. They edit in the Studio

    Louise, on the client’s team, changes an article. She sees both languages and what still needs review.

  2. git log

    721f194  Update press-release/resultats-1977
             Louise Gagnon
    7238adb  Update event/brunch-lecteurs
             Sophie Marchand
    c5f772f  Create faq/vide
             Marguerite Fontaine

    2. Moteur commits it

    Every save is a commit in the project’s own Git repository: who, what, when, and a way back.

  3. your frontend

    const [article] = await moteur
      .channel('public')
      .entries.list('article');
    
    article.data.title.en
    // "We Started in a Garage in Montreal"

    3. Your site reads it

    Once a person approves it, the published version is what your frontend gets through the project’s API.

Looking for our first agency partners

We’re building the agency program with the agencies that use Moteur first: partner terms, support, and a place in our directory. This spot is for your agency’s logo and words.

Tell us about your agency

Built for agency work

What changes for an agency

The parts of Moteur that matter when you run many client sites, and what each one saves you.

  • Modelling

    Model the content once

    Tell Moteur once what each client publishes: articles, events, products. The Studio’s forms, the API and the checks all follow from it.

    • Forty kinds of field, from a headline to a gallery
    • Every model kept in Git, with its history

    models/article/model.json

    {
      "id": "article",
      "label": "Article",
      "fields": {
        "title": {
          "type": "core/text",
          "label": "Title",
          "options": {
            "multilingual": true,
            "required": true,
            "maxLength": 140
          }
        },
        "body": {
          "type": "core/block-list",
          "label": "Body",
          "options": {
            "required": true
          }
        }
      }
    }
  • Pages

    Pages from your blocks

    Your components become the blocks the client builds pages with. They can add, move and fill them. They can’t invent one your frontend can’t draw.

    • You choose which blocks each page allows
    • One block, one component in your code

    blocks/pull-quote.json

    {
      "type": "demo/pull-quote",
      "label": "Pull quote",
      "fields": {
        "text": {
          "type": "core/rich-text",
          "options": {
            "multilingual": true,
            "required": true
          }
        },
        "attribution": {
          "type": "core/text",
          "options": {
            "multilingual": true
          }
        }
      }
    }
  • Collaboration

    Work on it together, live

    Your team and the client’s see who is where before anyone types. Nobody has to ask on Slack who has the homepage open.

    • Down to the field, and the language
    • Crossed saves sorted out field by field
  • Workflow

    Nothing live without review

    Turn on reviews and every change waits for a person to approve it, so a typo never reaches the client’s homepage by itself.

    • The reviewer sees exactly what changed
    • Approving publishes it. Sending it back keeps the draft
  • Languages

    Bilingual from the first field

    Every field in every language, side by side, with missing and stale translations flagged before review.

    • A translator role that only touches translations
    • Machine translation stays marked until someone reads it

    entry.json

    {
      "title": {
        "fr": "Nous Avons Commencé dans un Garage à Montréal",
        "en": "We Started in a Garage in Montréal"
      }
    }
  • Ownership

    Content in Git

    Each project is a Git repository: history per entry, a way back for every change, no content locked in a vendor’s database.

    • Every save is a commit: who, what, when
    • Push it to your own remote whenever you like

    git show 4947387

    4947387  Louise Gagnon
    Update article/issue-01-1 — Louise Gagnon
    
    @@ -7 +7 @@
    -  "en": "We Started in a Garage in Montreal"
    +  "en": "We Started in a Garage in Montréal"
  • Handoff

    A handoff that holds

    Every client in one account. Invite each client’s team with the roles their job needs, and keep the keys yourself.

    • Eight roles, set per project
    • Switch clients from the top bar
  • Developers

    One API per site

    Each site reads its own channel: the models and fields it needs, published content only.

    • An OpenAPI document for every channel
    • Keys that only read, and only from your domains

    GET …/channels/public/article/entries/issue-01-1

    {
      "id": "issue-01-1",
      "type": "article",
      "status": "published",
      "data": {
        "title": {
          "fr": "Nous Avons Commencé dans un Garage à Montréal",
          "en": "We Started in a Garage in Montréal"
        },
        "author": "henri"
      }
    }
  • Forms

    Forms with an inbox

    Contact and quote forms without another service to pay for. Submissions land in the Studio’s Inbox, where the client reads them.

    • Sent on by email or webhook, or kept as a draft
    • A spam trap built in
  • Media

    A media library that stays tidy

    The client’s pictures, with alt text in each language and a focal point every crop keeps.

    • Duplicates caught on upload
    • Replace a picture everywhere at once
  • Quality

    Radar checks every save

    Sixteen checks run as the content changes and catch what slips: a missing alt text, a stale translation, a link to a draft.

    • Read it from the API, the CLI or an agent
    • A webhook when something breaks, and when it’s fixed

    GET /projects/demo/radar

    {
      "ruleId": "missing-locale",
      "severity": "warning",
      "entrySlug": "issue-02-3",
      "fieldPath": "title",
      "locale": "en",
      "message": "Default locale has a value but en is empty.",
      "hint": "Add a translation for this locale."
    }
  • AI

    Agents that wait their turn

    Connect Claude through MCP to draft and translate. Every agent edit is marked, and goes through review like anyone’s.

    • Connected project by project, with the access you choose
    • An agent can never approve its own work

In the newsroom

Work on it together, live

Monday morning: the client’s editor is fixing the French title while your writer finishes the English excerpt. In Moteur they see each other before they type, so nobody saves over anybody.

  • Everyone in the project shows in the top bar, and each field shows who’s in it
  • What someone types appears for the others as they type it. The field you’re in never moves under you
  • If two saves still cross, whatever doesn’t clash merges by itself, and you choose the rest
  • Notes stay pinned to the field they’re about
An article open in the Studio. A tab on the French title says “Marguerite is reading”. A tab on the English excerpt says “Céleste is writing…” and her new sentence is there. The header says “Céleste and Marguerite are here”, with their avatars in the top bar.An article open in the Studio. A tab on the French title says “Marguerite is reading”. A tab on the English excerpt says “Céleste is writing…” and her new sentence is there. The header says “Céleste and Marguerite are here”, with their avatars in the top bar.
Louise’s view: Céleste writes the English excerpt while Marguerite reads the French title.
  • 2 min agoLouise Gagnon published “We Started in a Garage in Montréal”
  • 5 min agoMarguerite Fontaine asked for a review of “The Factory That Never Stops”
  • 9 min agoCéleste Armand approved “The Factory That Never Stops”
  • 14 min agoThéo Nguyen left a note on “Sept-Îles, the town that listens”
  • 22 min agoClaude edited “Paris, one year on”
  • 31 min agoSophie Marchand created “Le brunch des lecteurs”
  • 47 min agoCéleste Armand sent back “SIGNAL-2”

The Moteur Journal demo team’s afternoon, in the Studio’s own words.

Week one

From signed contract to launched site

The same four steps for every client.

  1. Create the project

    Start from a blueprint or empty, name the project after the client, choose its languages, and model its content.

  2. Connect your frontend

    Make a key for the project’s site channel, limited to the site’s domain. Your frontend reads the published content.

  3. Invite the client’s team

    Writers write, reviewers approve, you keep the keys. Everyone signs in to the same Studio.

  4. Go live, and keep it live

    Approving publishes, and a signed webhook tells your host to rebuild. Radar checks every save for missing alt text, stale translations and broken links.

The Article model in the Studio’s Setup: seventeen fields listed with their kind, languages and whether they’re required. The Body field is open beside the list: “Blocks, a page built from blocks”, required.The Article model in the Studio’s Setup: seventeen fields listed with their kind, languages and whether they’re required. The Body field is open beside the list: “Blocks, a page built from blocks”, required.
The Article model, its Body made of blocks.

For your developers

Model it once, the way the site needs it

A model is what an entry holds. A block is what a page can be made of. You write the frontend against both, and the client’s team fills them in.

  • Forty kinds of field: text, rich text, dates, media, links to other entries, lists of blocks
  • Each field holds one value per language, or one for all
  • Models are files in the project’s Git repository: edit them in the Studio or in your editor, and roll any of them back
  • Add a field after launch and nothing breaks: existing entries simply get it, empty
  • Only builders and developers change a model, and the API holds that line, not just the Studio
How modelling works →

A second pair of eyes

Review, built in

Every change your client’s team makes waits in one queue. Reviewers see who asked and when, approve it, or send it back with a note.

  • Changes from people and from agents, in one queue
  • Approving publishes. Rejecting keeps the draft
  • Every decision is in the project’s history

Marguerite, a writer, changes the English headline “The Factory That Never Sleeps” to “…Never Stops” and asks for review. Then Céleste, the reviewer, is introduced. She opens the review, sees the one word that changed, and approves it, which publishes it.

Marguerite asks for review. Céleste sees the one word that changed, and approves.

The groove

Four people, one history

Everyone works at once, each in their own lane: writing, translating, reviewing. Every save lands in the same history, and what goes live is what the reviewer approved.

  1. Marguerite Fontaine: Drafts the headline; Asks for review.
  2. Louise Gagnon: Fixes the French title; Adds the cover.
  3. Claude: Translates the excerpt; Marked: not yet read.
  4. Céleste Armand: Sees one word changed; Approves.
  5. Published
Each dot is a save, and each save is a commit in the project’s Git history.

Louise invites Camille from the client’s team as a writer, and keeps the invite link to share by hand. Then Marguerite, a writer, signs in: her Studio shows the content and the site’s settings, nothing else, and she opens an article.

Inviting the client’s team, then a writer’s Studio: the content, and nothing to break.

For the client’s team

A handoff that doesn’t end in a support ticket

When the site launches, the client’s people get a Studio sized to their job. They write and review. They can’t change the models your frontend depends on.

  • Roles per project: writer, translator, reviewer, content lead, builder, admin, developer, billing
  • Invitations by email, one project at a time
  • You keep developer access to every client project
How the handoff works →

Two looks

One Studio, two moods

Discothèque for the newsroom that wants a little joy, Folio for the bank that doesn’t. Each person picks their own look from their account menu, and nothing about the content changes.

The same article open in the Studio, in its Discothèque look on one side and its Folio look on the other.

For the tech lead

Safe to hand over, quick to load

Your tech lead will ask before you put a client on anything new. Here are the answers, and none of them needs setting up.

  • Your site’s key can only read, only its channel, only from your domains. It’s stored hashed, and you can rotate it
  • A channel hands out published content and the fields you chose, nothing else
  • Images are cut to size on request, in WebP or AVIF, around their focal point, then cached for a year
  • Every webhook is signed, and retried for two hours if your server is down
  • An agent gets in through OAuth, project by project, with only the access you grant

your frontend

import { imageAttributes } from '@moteurio/client';

// One request: published only, the fields the channel allows.
const [article] = await moteur
  .channel('public')
  .entries.list('article');

// The cover, cropped around its focal point,
// in AVIF, with its alt text in French.
<img {...imageAttributes(article.data.cover, {
  ratio: '16:9', format: 'avif',
  sizes: '50vw', locale: 'fr',
})} />

Where Moteur sits

Against the two kinds of CMS agencies usually choose between.

MoteurA CMS on your own serverA hosted headless CMS
Where the content livesA Git repository per projectA database you runThe vendor’s cloud
History of every changeEvery save is a commitDepends on pluginsPer entry, often by plan
Editing for the client’s teamThe Studio, bilingual, with reviewsAn admin you themeA hosted editor
Who runs itMoteur Cloud, or your own serverYouThe vendor
If you leaveThe engine is open source (MIT): run the same projects on your own serverExport and migrateExport through the API and migrate

Checked October 2026. Kinds of CMS, not named products: each named comparison has its own page.

A plan per client project

Start free. Move a project to a paid plan when its site needs room. Prices come straight from Moteur’s billing.

  • Free

    $0 / month

    To try Moteur, or for a small site. One per person.

    • 1 person
    • 1 project
    • 10 AI credits a month
    • 100 MB of files
    • 2,000 API requests a month
    • 1 GB of image traffic a month
    • 1 API channel
    • 1,000 entries
    • 50 pages
    • 100 form submissions a month
  • Personal

    $9 / month$89 / year

    For a personal site or a portfolio, with room to grow.

    • Up to 2 people
    • 1 project
    • 500 AI credits a month
    • 1 GB of files
    • 10,000 API requests a month
    • 10 GB of image traffic a month
    • 2 API channels
    • 10,000 entries
    • 500 pages
    • 1,000 form submissions a month
  • Most agencies pick this

    Pro

    $39 / month$389 / year

    For a site with a small team behind it.

    • Up to 5 people
    • 1 project
    • 5,000 AI credits a month
    • 5 GB of files
    • 100,000 API requests a month
    • 100 GB of image traffic a month
    • 5 API channels
    • 200,000 entries
    • 2,000 pages
    • 10,000 form submissions a month
    • Writing and translation help
  • Extra

    $129 / month$1,289 / year

    For a busy site and the team that runs it.

    • Up to 20 people
    • 1 project
    • 25,000 AI credits a month
    • 20 GB of files
    • 200,000 API requests a month
    • 250 GB of image traffic a month
    • 10 API channels
    • 2,000,000 entries
    • 500,000 pages
    • 20,000 form submissions a month
    • Everything in Pro

Extras, on any paid plan

  • More people1 person$8 a month
  • More API requests50,000 API requests a month$10 a month
  • More AI credits2,500 AI credits a month$10 a month
  • More room for files10 GB of files$5 a month
  • More image traffic50 GB of image traffic a month$5 a month
Start a client project

Agencies: talk to us about the partner program.

Questions agencies ask

A project lead asksCan our client’s team break the site?

MoteurNot by editing. Writers and reviewers change content, not the models your frontend reads. With reviews on, their changes wait for a reviewer before they go live.

An editor asksWhat happens when two people edit the same article?

MoteurThey see each other first: who’s in the article, and in which field. If their saves still cross, everything that doesn’t clash merges by itself, and the Studio asks which version to keep for the rest. Live collaboration comes with Moteur Cloud, on any plan with room for two people or more.

A developer asksCan we change a model after the site is live?

MoteurYes. Add a field and every entry gets it, empty. Remove one and its values stay stored, just out of the API. The one thing you can’t do is rename a field’s id, because entries are stored under it. And every change to a model is a commit you can roll back.

Someone, at 11 pm, asksIt’s 11 pm and a typo just went live. Can we undo it?

MoteurYes. Every save is a commit: open the entry’s History, restore the version before the typo, and publish it. Restoring saves it again as a new version, so nothing is lost. It takes less time than the email you were about to write.

A developer asksCan we use one stack for every client?

MoteurYes. Every frontend reads its project the same way: a channel, a read-only API key, and the channel’s own OpenAPI document. Your block components carry over from one client to the next.

An agency owner asksWho pays for a client’s project?

MoteurEach project has its own plan. Whoever holds the project’s billing role manages it: you, or the client.

A tech lead asksHow do we keep a client’s content safe?

MoteurEach person gets a role per project, and the API checks it on every request. Your site’s key can only read what its channel shows. And every change is in Git with a name on it, agents included.

An agency owner asksIs there an agency program?

MoteurWe’re setting it up with our first agencies: partner terms, support and a listing in our directory. Tell us about your agency below.

A client’s IT team asksCan a client run Moteur on its own servers?

MoteurYes. The engine is open source (MIT): the API, the CLI, the Studio in the terminal and MCP. Moteur Cloud adds the web Studio, live collaboration, AI help, media storage and the operations.

A cautious editor asksCan AI agents publish on their own?

MoteurNo, not by default. Agents connected through MCP draft and translate. Their edits are marked and go through the same review as everyone else’s.

Put your next client on Moteur.

Start a project for free, or show us your agency’s work and we’ll set it up together.

Book an agency demo

Thirty minutes with us, on your kind of client sites. We’ll answer within a working day.

Hi, I’m from . We build client sites a year, mostly . You can reach me at .