Oban UI: Private Beta

Many months ago when I originally announced Oban I mentioned that a LiveView powered UI would be available for it soon. Well, the “soon” part wasn’t especially accurate, but I am pleased to announce that the Oban UI is now in private beta.

You can see a live version of the UI running at Oban • Jobs. The demo runs semi-constant stream of random jobs and doesn’t contain any actual personal information. Feel free to discard or delete jobs, it will just make more.

Now on to the “private” part.

Why is it private?

Oban itself has taken a ton of time to develop and support. I absolutely love the project, adore working on it, and am 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 I want to focus on and give proper attention—eventually I hope to sustain the project and by charging for a UI license.

Please note that Oban itself will always be entirely open source. There will never be an “enterprise” version with gated features.

Why is it a beta?

There are a few reasons:

  1. Installing it can be tricky. The package is largely stand alone, but it needs to be routed and configured from within a phoenix application. I expect that it will take some time to refine the installation steps and work out the kinks.
  2. The UI is missing some important features, has some known bugs and definitely needs polishing. That will take time, and I want to ensure that the initial users are willing to give meaningful and helpful feedback.
  3. There aren’t any proper support channels yet, it’s all a bit ad-hoc.

How does the UI integrate into my app?

The package is named oban_web and it is a published privately under the oban organization on hex.pm. 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, run some migrations and its up.

What’s on the roadmap?

As new features are added and bugs are fixed I’ll post about them here. Here are some of the bigger planned fixes/features currently:

  • Sidebar Accuracy
  • Pagination
  • Details View (with error details, unique information)
  • Queue Controls (scale up, down, pause from the UI)
  • Bulk Actions
  • Node Information
  • Live & Historic Metrics

How do I get into the beta?

Anybody wanting to join the beta now please go to https://oban.dev

The site has a little more info and a tiny little signup form for the beta.

Thank you to everybody that has expressed interest and offered support. If you have any questions or comments please leave them here. :yellow_heart:


Challenge accepted! :077:

Array.from(document.querySelectorAll(".btn--destructive")).forEach((el) => el.click())

                                                    A few attempts later …

Well … good job! :smiley:

It’s why I love fault-tolerant so much!


Ha :smiley:!

Thanks for accepting the challenge. That was largely a test of LiveView more than anything else!

Those buttons could really use a confirmation…


One more thing about joining the beta: please include the email you would like to register with.

I made a few guesses for email requests but that didn’t work when I received DMs!

It is far too late to edit the main post, but to anybody wanting to join the beta now please go to https://oban.dev

The site has a little more info and a tiny little signup form for the beta.


This looks really nice and sure beats manually running queries.

But one question for you, and don’t take this is an attack or a challenge to defeat your ways to generate revenue, but have you thought about what would happen if someone makes an open source web UI on top of Oban?

I only bring that up because the project is so polished and it sounds like you want to go all in and work on this as much as possible and it would be great for you to be able to sustain that work by generating income but it would also suck if you put in all of that time and effort and then all of that comes crumbling down because someone else makes a web UI that’s not being charged for.

I know you’re not going to add paid features to Oban (which I think is great because that has always been something that bothered me a lot with Sidekiq). I’m mainly writing this because maybe it will spark some ideas in other ways you can generate income on top of the web UI. I know consulting is a big one.

Have you considered offering premium support? This would be beyond github issues. People could pay you X amount per month or year and that would allow them to get X amount of hours of your 1 on 1 time to help on something specific to their app. This basically becomes a safety net and you become the person to call if something goes wrong with their Oban set up. It’s sort of like consulting but it’s more of a retainer / insurance based form of it.


My family was traveling yesterday, sorry I didn’t get the chance to write back.

That doesn’t seem like an attack at all! This is certainly something I’ve thought about, and something that my wife brings up all of the time. It will always be a possibility (just like somebody replicating Oban is a possibility). There are a few plans to guard against this, some of which you touch on in your message.

That would certainly suck. I’m primarily relying on the fact that the amount of time to build a UI isn’t trivial—at least not one that has much functionality. The price of the license is still up in the air, but one of my selling points is that it costs less than you would pay an entry level dev for one week of work.

That will never stop a student or somebody who has free time from taking a stab at it though. Then again, there are plenty of gems out there that replicate part of Sidekiq Pro / Ent and that doesn’t seem to impact sales much.

That’s a great idea. Offering support is definitely something I’ve thought about. Bundling it as part of the license, or using it as a add on would be great.

Thanks for your comment. I really appreciate your time, your concern, and the thought you put into it.


Hey beta people! ObanWeb v0.6.2 is released today with a nuanced bug fix for users that are running queues on dedicated workers and no queues on their web nodes.


  • Add support for explicitly disabling stats rather than inferring based on queue configuration. This prevents issues in production environments where certain nodes (i.e. web) aren’t processing any queues, but the the UI is accessed.

    ObanWeb configuration now differs from Oban configuration and you’ll need to specify it separately. Specify the repo in config.exs:

    config :my_app, ObanWeb, repo: MyApp.Repo

    Disable the stats tracker in the test environment:

    config :my_app, ObanWeb, stats: false

    Then, be sure to use the ObanWeb config in your application supervisor:

    {ObanWeb, Application.get_env(:my_app, ObanWeb)}

Thanks to @bgentry for identifying the issue.


This fixed our issues, thanks @sorentwo! :pray:

1 Like

Oban 0.7.0 is out today with a new and long overdue feature: a details view that shows job state, timing, full arguments, errors and some control buttons. It is now possible to kill, discard, start, rerun or delete a job from the details view. The jobs table is getting an update currently and all of those actions will be available there, without having to jump into details.

Screenshots are attached and the live demo is running as always.

Changes since 0.6.2 (including some bits that were part of 0.6.3):


  • Add detail modal for inspecting job arguments, errors and state timings.


  • Display duration or distance in words depending on job state. This clarifies timestamp information. Relative timestamps have an formatted absolute value as the “title” attribute as well.

  • Improved ordering for various job states. Many states were reversed, making the table view seem broken.


Waiting for a retry after failure:


I neglected to announce the release of ObanWeb v1.0 here last week. It was rolled into the Oban v1.0 announcement and didn’t get the proper “release notes” treatment.


The biggest change is that this version relies on Phoenix LiveView v0.6, which itself has breaking changes. Be sure to upgrade LiveView along with ObanWeb using this guide: https://hexdocs.pm/phoenix_live_view/installation.html

Changes for V1.0.0 and v1.0.1


  • Display discarded_at time in detail timeline view
  • Prevent jitter when clearing stats cache


  • Upgrade to LiveView ~> 0.5 and test with 0.6.
  • Upgrade Oban and set dependency to ~> 1.0.0
  • Update stats and the queries that power stats to rely on more frequent
    refreshes and fewer database calls. The average refresh time dropped from
    ~310ms to ~180ms.

ObanWeb v1.1.0 is out today with a fix for verbose logging and overhauled stats tracking. It now uses less resources when nobody is connected to the dashboard.


  • Add verbose setting to control log levels. This command mirrors the behavior in Oban and is respected by all queries.

  • Deprecate stats configuration. The stats module is entirely overhauled so that it only refreshes when one or more users are connected. That prevents it from using any connections or performing any queries while testing, which renders the stats option pointless.

  • Add stats_interval to control how often node and queue counts are refreshed. The default value is every 1s (you shouldn’t need to change this)

  • Add tick_interval to control how often the jobs table and job details are refreshed. The default value is every 500ms (you shouldn’t need to change this)


Is anyone expiriencing issues with the ObanWeb interface where the job modal seems to crash and close just after opening it?

AppSignal is reporting this backtrace:

lib/oban_web/query.ex:16 ObanWeb.Query.fetch_job/2
lib/oban_web/live/dashboard_live.ex:180 ObanWeb.DashboardLive.maybe_refresh_job/2
lib/oban_web/live/dashboard_live.ex:79 ObanWeb.DashboardLive.handle_info/2
lib/phoenix_live_view/channel.ex:110 Phoenix.LiveView.Channel.handle_info/2
gen_server.erl:637 :gen_server.try_dispatch/4
gen_server.erl:711 :gen_server.handle_msg/6
proc_lib.erl:249 :proc_lib.init_p_do_apply/3

I’m using Oban version 1.0.0 and ObanWeb version 1.1.0.

1 Like

Sorry about that! It is fixed with v1.1.1, released yesterday. The test suite is improved to cover that case as well.


Ah, nice one. Working now :+1:

1 Like

I’m pleased to announce that the UI is no longer in beta and is now generally available through a paid license. There are new installation docs, an faq, a changelog and a public roadmap is in the works. This is still just the beginning for the product!

Thank you to everyone that participated in the beta! You’ve been extremely helpful and I’m grateful for your support and all of the feedback :yellow_heart:.

There will be a two week grace period for existing beta users (in addition to the 7 day trial). You can access your current license key and subscribe to a plan through your account page by signing in with your existing email. If you have any questions please reach out here, on slack, or by sending an email.


Great news @sorentwo, congratulations on the launch.

I have a question, how does it count when you have a production server but obviously you also use it in the development server (probably, several developers), and also on the staging server.

Do heroku dynos count as applications?

1 Like

Only the number of production servers counts, staging and development aren’t a factor. The intention is to be extremely permissive toward smaller apps and businesses. With the way Elixir apps scale it takes a hefty amount of traffic (or redundancy) to scale beyond a couple of servers.

Nope. It means “logical” applications. For example, if I’m building apps for multiple clients I can’t share a single license for each application.