Odoo hosting built for developers

Push a branch and get a running Odoo. Cloud Buddy builds every branch of your GitHub repository, previews every pull request, and gives you a shell, an editor, live logs and a command-line tool, so your team spends its time on modules, not servers.

  • A branch per environment
  • Pull request previews
  • The kv command-line tool

Every branch, a running Odoo

Git is the source of truth: push to GitHub and the platform builds it. The stage of a branch decides what its database is.

  • A branch per environment

    Each branch you push builds into its own Odoo with its own URL, logs and shell, and the build status is reported on your commits.

  • Development, staging, production

    Development builds start from demo data and run your tests, staging from a neutralized copy of production, and production keeps its database.

  • Staging on production data

    Emails are caught and scheduled actions are off. Restore any production backup into staging to reproduce a bug on real data.

  • Updates with a safety net

    Modules whose version goes up are updated after a backup, and a failed update puts the backup back and restarts the previous build.

  • Odoo 14 to 20

    Community or Enterprise from the official Odoo images, and any development branch can try another major version.

  • Rebuild or revert

    Rebuild a branch, or go back to an earlier build, in one click from the dashboard or one command from your terminal.

A preview for every pull request

Reviewers open a link instead of checking out a branch, and code from forks never gets near your team's environments.

  • Built when it opens

    Each pull request gets a development environment of its head commit, on a fresh database with demo data, with a GitHub check and a comment linking to it.

  • Forks wait for approval

    A pull request from a fork isn't built until a project admin approves that exact commit. A new push needs a new approval.

  • Isolated from your team

    A fork's preview has its own database role, files and network, no Enterprise code and a throwaway master password.

  • Cleaned up for you

    Closing or merging the pull request removes its preview with its database. Production data is never copied into a preview.

Your projects, from the terminal

kv is one Python file with no dependencies, for macOS, Linux and Windows. It uses the same API and scopes as access tokens, so it never does more than your role allows.

  • curl: Installs kv, after checking the download against its SHA-256.
  • kv login: Opens your browser to approve a scoped token for this terminal.
  • kv status: Run in a Git checkout, it shows the branch you're on and its latest build.
  • kv build: Rebuilds a branch and follows its log until it finishes.
  • kv logs: Follows a log live: the build, the install, the tests or odoo.log.
  • kv explain: The AI explanation of a failed build: the cause and the fix steps.
  • kv shell: A shell in the running build over SSH, with your own key.
  • kv db download: Downloads a branch's database, with or without its filestore.
$ curl -fsSL https://cloud.knovadigital.com/cli/install.sh | sh
$ kv login
$ kv status
$ kv build acme/staging --wait
$ kv logs acme/staging --file odoo.log -f
$ kv explain acme/feature-invoices
$ kv shell acme/feature-invoices
$ kv db download acme/staging -o staging.zip

Shell, editor and logs, nothing to set up

The tools of an Odoo developer, next to every build.

  • Web shell and SSH

    A terminal inside the build with Odoo shell, Python and SQL consoles, or SSH with the keys of your GitHub account.

  • Online editor

    Edit, commit and push from the browser, with the Odoo and Enterprise sources read-only alongside your code.

  • Logs for every phase

    Build, install, update, pip and server logs, plus slow SQL queries, streamed live as the build runs.

  • Jupyter notebooks

    JupyterLab on any build with env ready to use, like odoo shell. Every cell is recorded like a shell command.

  • Mail catcher

    Emails from development and staging are caught and shown in the Mails tab, never sent to a real person.

  • Profiler and graphs

    A built-in code profiler, and CPU, memory, requests and response times graphed per branch, with releases marked.

Fix failures faster, automate the rest

Less time reading tracebacks and typing the same commands.

  • Explain this failure

    On a failed build, AI reads the relevant part of the log and answers with the cause, numbered fix steps and a confidence level. Secrets are removed first.

  • Apps catalog (OCA)

    Search the Odoo Community Association's modules for your version and add them to a development branch in one commit, Python requirements included.

  • API and access tokens

    Tokens scoped to reading, builds, backups or admin, shown once and stored only as a hash, and limited to some projects if you like.

  • Chat and webhooks

    Builds, deploys, backup failures and downtime in Slack, Discord or Teams, or as signed JSON to a webhook of your own.

Questions from developers

Does my repository need a special layout?

No. Put your modules at the root of the repository or in folders; submodules are supported, including private ones with a deploy key. Python requirements in requirements.txt are installed on each build.

How are pull requests from forks kept safe?

They aren't built until a project admin clicks Build this PR, which approves that exact commit. Each one then runs with its own database role, files and network, without Enterprise code or your project's master password.

What does the kv command-line tool need?

Python 3.9 or later and nothing else: kv is a single file for macOS, Linux and Windows. It signs in through your browser, or with an access token in CI.

What does the AI build doctor send, and to whom?

Only an excerpt of the failed log, the failing step and its error lines, sent to Claude by Anthropic after passwords, tokens, email addresses and your project's secrets are removed. The answer is kept with the build, so teammates see it without a second call.

Can I trigger builds from CI?

Yes. Create an access token with the builds scope and run kv build with --wait in your pipeline, or call the API directly. The documentation has a GitHub Actions example.

Do staging environments send real emails?

No. Staging is a neutralized copy of production: emails are caught and shown in the Mails tab, and scheduled actions and external services are off. Only production sends for real.

Read the details

Push a branch, get an Odoo

Pick the workers, storage and staging environments you need, connect your repository, and your first build starts.

Start now · See all features