Introducing Ocelot: A Lightweight Oban Dashboard Without Phoenix

elixir

Marcelo Dominguez avatar

Marcelo Dominguez

- May 22, 2026


At Mimiquate, we use Oban everywhere.

Whether it’s a large Phoenix application or a smaller service running only Plug and a couple of routes, background jobs are usually part of the stack. Oban has been rock solid for us for years.

One thing we also really like is Oban Web. It gives you visibility into your queues, workers, retries, failures, and everything else you need to understand what your jobs are doing.

But there’s a catch.

To use Oban Web, you need Phoenix.

That’s completely reasonable — Oban Web is built for Phoenix applications and integrates beautifully there. But not every project we build needs the full Phoenix stack.

At Mimiquate, some of our internal tools and smaller services are just Mix applications with Plug for a simple UI. In those projects, pulling Phoenix just to get a jobs dashboard felt unnecessary.

There is a way to run Oban Web as a standalone application, and it works great too. But that means another application to deploy, configure, and maintain.

What we wanted was much simpler:

  • A small dashboard
  • Easy to embed into existing applications
  • No Phoenix dependency
  • Just enough visibility into jobs
  • So we built Ocelot.

    What is Ocelot?

    Ocelot is a lightweight dashboard for Oban.

    It focuses on the basics:

  • View queues
  • Inspect jobs
  • Check failures and retries
  • Understand what’s happening in your background processing system
  • That’s it.

    No job controls. No advanced management features. No attempt to replace Oban Web.

    The goal is simply to provide visibility for projects that don’t use Phoenix and don’t want the operational overhead of running a separate dashboard application.

    Why is it limited for now?

    Right now, Ocelot focuses mostly on visibility.

    That wasn’t really a philosophical decision as much as a practical one.

    When we started building it, the immediate need was simply understanding what was happening inside our queues.

    Most of the time, when debugging or monitoring smaller systems, we just wanted to answer questions like:

  • Are jobs running?
  • What failed?
  • Is a queue backed up?
  • What is retrying?
  • So the first version focused on making those answers easy to access while keeping the implementation small and straightforward.

    Over time, we’ll probably add actions and more management capabilities as we need them ourselves.

    But for now, keeping the scope focused has worked well.

    Small tools for small apps

    One thing we’ve learned over time is that smaller Elixir applications benefit a lot from staying small.

    Sometimes a Plug application with a couple of routes is all you need.

    Adding Phoenix just for one dashboard page can feel like a lot of extra surface area — especially if the rest of the application is intentionally lightweight.

    Ocelot fits into that space.

    It’s not trying to compete with Oban Web. In fact, if you’re already running Phoenix, Oban Web is probably still the better choice.

    But if you have:

  • standalone Mix applications
  • small internal services
  • lightweight APIs
  • worker-only nodes
  • Plug-based apps
  • then Ocelot might be useful.

    What’s next?

    We already have a few ideas for where Ocelot could go next.

    There are some obvious features we’ll probably add over time:

  • retrying jobs from the UI
  • cancelling or discarding jobs
  • better filtering and search
  • richer job inspection
  • lightweight queue controls
  • But we also want to be careful.

    The whole reason Ocelot exists is because we wanted something small.

    We’re not trying to build another large operational platform or replicate everything Oban Web already does extremely well.

    The goal is still the same:

  • simple to embed
  • minimal dependencies
  • easy to operate
  • enough visibility and control for smaller systems
  • So future features will probably continue following that philosophy.

    If something makes Ocelot significantly more complex without solving a real day-to-day problem, we’ll likely avoid adding it.

    We’d rather have a small tool that stays useful than a large tool that slowly loses its original purpose.

    Give it a try

    Ocelot is open source and still very early, but it’s already useful for us internally.

    We’d love feedback from other teams using Oban outside of Phoenix.

    Do you have projects that use Oban without Phoenix? Would a lightweight dashboard like this be useful for you?

    Give it a try and let us know what you think.

    paper airplane

    Thoughts? Like what you just read?

    Let's keep the conversation going. Share it on social or reach out and tell us your take.

    mimiquate petmimiquate pet