Frequently Asked Questions

How does the UI integrate into my app?

Oban UI is delivered as a Hex package named oban_web, which is a published privately under the oban organization. The package is entirely self contained—it doesn’t hook into your asset pipeline at all. Just mount the live module in your router, pass some configuration and its up.

Why is Oban Web+Pro private?

We absolutely love Oban, adore working on it, and are stunned by the positive response it has received. The UI requires even more work to get right and make into a truly useful tool for production applications. This is something we want to focus on and give proper attention—we aim to sustain the project and by charging for licenses.

My app only an API and doesn’t compile assets, can I still use the UI?

Yes! The ObanWeb package is entirely self contained and doesn’t require Node, Webpack, or any other tools for asset compilation.

Why doesn’t searching show any of my jobs?

If you find that searching for workers or args doesn’t return the results you expect, you may need to increase the similarity threshold in your database. The default threshold for fuzzy matching in PostgreSQL is 0.3, which isn’t very forgiving.

You can configure the threshold at the database level:

ALTER DATABASE my_db SET pg_trgm.similarity_threshold = 0.1;

It’s also possible to increase the threshold for each database connection by setting an after_connect hook in your Ecto configuration:

config :my_app, MyApp.Repo,
  after_connect: {Postgrex, :query!, ["SELECT set_limit($1)", [0.1]]}

Read more about search tolerance in the official pgtrgm docs.

How do we authorize with Hex in Heroku?

If your app runs on Heroku using the Elixir Buildpack (rather than Docker) you’ll need to use compilation hook to authorize hex before fetching dependencies.

First, if you haven’t already, set your license key on Heroku:


Next, add a small shell script to your application in ./bin/predeps:


mix hex.organization auth acme --key "$OBAN_WEB_LICENSE_KEY"

Finally, set the predeps script within elixir_buildpack.config:


Thanks to Jessie Cooke for the solution to this situation!