Teams, a second factor for your account, more database engines, and metrics you can trust
Big release this time. You can now invite people to work on your projects, lock down your account with multi-factor auth, run MySQL, MongoDB, or Redis right next to Postgres, and read a metrics page that finally tells you the truth about your apps. There’s also a builder you can choose, deploys from any folder in your repo, and a stack of smaller fixes.Teams
You don’t have to share a login anymore. Spin up a team, invite people by email, and decide exactly what each person can touch.- Invite a teammate from the new Teams page. They get an email, click to accept, and they’re in.
- Grant access per project, with a role: viewer (look, don’t touch), member, or admin (manage people and access).
- You stay the owner. Projects, billing, and ownership don’t move when you add people, so it’s always clear who pays and who’s in control.
- Pull someone’s access the second you need to. Unaccepted invites expire on their own after 7 days.
Multi-factor authentication
Add a second factor so a borrowed GitHub session isn’t enough to get into your account.Turn it on in your account settings under Two-factor authentication. Your options:- An authenticator app (1Password, Google Authenticator, anything TOTP).
- Touch ID, Face ID, Windows Hello, or a hardware security key, via passkeys.
- Recovery codes for the day you lose your phone. Save them somewhere safe, and regenerate a fresh set whenever you want.
MySQL, MongoDB, and Redis
Last time we said more database engines were on the way. Here they are. Pick your engine when you create a database:- PostgreSQL (16 or 15)
- MySQL (8)
- MongoDB (7 or 6)
- Redis (7)
DATABASE_URL in on the next deploy. See Databases.A metrics page you can trust
We rebuilt the Project Metrics page, and more to the point, we fixed what it was telling you.- The numbers are right now. The old page quietly left push-triggered deploys out of your counts and mis-averaged per-Frame usage. Both fixed, so deploy counts, success rates, and resource usage match what actually happened.
- New: network egress. See how much data your apps are sending out, for the whole project and per Frame.
- An easier read. A six-stat summary up top (CPU, memory, egress, deploys, success rate, deploy speed), a fleet-health bar, usage charts for the last 7 days, and a per-Frame table you can sort.
- It all streams in with skeletons instead of staring at a blank page while it loads.
Deploy from a subdirectory
App lives in a subfolder of your repo? Set a source directory and Nubo builds from there instead of the root. Handy for monorepos.Set it when you first create a Frame (in the deploy wizard, quick create, or the new-Frame modal) and change it later in Frame Settings. Works on managed cloud and on your own agents.Choose your builder
Frame Settings has a new Builder option:- Paketo: our default, Cloud Native Buildpacks.
- Raypacks (Beta): our own daemonless builder, built for faster builds. Still in beta, so expect the occasional rough edge.
Previews, now fully managed
Preview deployments grew up. Switch them on in Frame Settings and every pull request gets its own running copy on an HTTPS*.nubo.onl subdomain. You control:- What triggers one: pull requests, branch pushes, or a branch allowlist.
- How long it sticks around before idle cleanup (7 days by default).
- Per-preview env overrides, so a preview can point at staging credentials.
Emails got a redesign
Our transactional emails (welcome, build and deploy failures, domain changes, support replies) now wear the Nubo look. Best part: when a build fails, the email shows the actual log inline with the errors highlighted, so you can usually spot what broke without opening the dashboard.Smaller things worth mentioning
- Storage now shows up on your billing page, next to compute and egress, so nothing about your usage is hidden.
- Login and sign-up moved to one tidy
/authpage. - Announcement banners no longer run off the screen: long ones scroll inside the card while the header and dismiss button stay put.
- The dashboard got a consistency pass, with shared components and a cleaner console look across pages.
support@withnubo.com or Discord.Managed Postgres, and a CLI for your terminal
Two things this time: you can spin up a managed Postgres database right next to your apps, and there’s now an official command-line tool for checking on your account without opening the dashboard.Managed Postgres databases
You don’t have to run your own database anymore. Create a managed Postgres from a Project, pick a size, and Nubo hands you a connection string. It shows up alongside your apps as a Frame, so it starts, stops, and appears in your lists like everything else, and its data sticks around between deploys.Wiring it into an app is one step: point the database at the Frame that needs it and Nubo drops the connection string in as an environment variable (DATABASE_URL by default). Your app picks it up on its next deploy.More engines are on the way. For now it’s Postgres, which covers most of what people reach for. See Databases.A command-line tool
There’s now an official CLI. Install it with one line:nubo login, then browse your projects, Frames, databases, volumes, and agents straight from the terminal, either with quick ls commands or a full-screen interactive view with live logs and metrics. Add --json to anything to pipe it into a script.This first version is read-only: it’s for looking, scripting, and keeping an eye on things, not yet for deploying or editing. Those come next. See the CLI guide.Questions or feedback: support@withnubo.com or Discord.Storage that sticks around, plans that fit, and a new home at console.withnubo.com
A lot landed since last time. Frames now have storage that lives between deploys, Nubo has real plans you can pick from, custom domains spin up faster with a guided setup, and the dashboard has moved to a new home.The dashboard is now at console.withnubo.com
The new address is console.withnubo.com. The old one still works and forwards over, so your bookmarks aren’t broken. Update them when you get a chance.Volumes
Frames can now keep data between deploys. Attach a volume, give it a mount path, and your files are right there. Redeploy, rollback, restart, doesn’t matter: the data stays put.Sizes go up to 1 TB. Each volume attaches to one Frame at a time. To move it to another Frame, detach it first. Spin one up from the new Volumes page on any Project, or from Quick actions in the sidebar.Billing runs by the hour for every volume you’ve provisioned, whether or not it’s attached. Detaching doesn’t stop the meter. Delete the volume to stop it.Pick a plan that fits
Nubo now has plans. Every new account starts on a 7-day Trial on us, so you can build something real before you commit. The Trial runs at standard Basic-level compute.- Basic: side projects and smaller apps.
- Platinum: bigger Frames, faster builds, more storage.
Custom domains, set up in a minute
Adding a custom domain is now a 4-step wizard inside your Frame’s settings. Type the hostname, copy the DNS record we give you, and we issue your certificate while you watch. Most domains go live in under a minute. HTTPS is on by default.Edit a Frame’s port
Switched the port your app listens on? Open Settings, change the number, save. We roll the Frame for you. No more deleting and recreating just because of a port.Cleaner Frame settings
The Frame’s Settings tab got a real rework. Everything sits in clear sections (General, Source, Runtime, Environment variables, Custom domains, Danger zone), with a sticky save bar so you always know if you have unsaved changes. Environment variables now have a reveal toggle, and the Danger zone actually looks like one.Agents, smoother all around
Running your own servers? A few things got nicer:- A new Agents page lists every server you’ve registered, with live status.
- Registering a new agent walks you through the install command and shows your token once, with a copy button.
- When you create a Frame, you now explicitly pick Nubo Cloud or one of your agents as the deploy target.
- Delete an agent straight from the row, no extra clicks.
Logs that load instantly
Open a Frame’s Logs tab and you’ll see the last few minutes of output right away, before the live tail kicks in. No more empty pane waiting for the next line.In-app announcements
We can now post short updates directly inside the dashboard so you don’t have to hunt down release notes to know what’s new. Dismiss any one you’ve already read, and replay them later from your settings if you want.A fresh login page
The login screen got a new look with our logo in 3D. There’s a small easter egg hidden in there too. Have a click around.Smaller things worth mentioning
- Stopped Frames no longer get counted as broken on your dashboard.
- Runtime logs no longer duplicate themselves when reconnecting.
- The New Frame modal has a clearer source-and-target flow.
- New Spaces get a friendly random name instead of “Default” every time.
- Settings pages are grouped into Account, Developer, and Preferences so they’re easier to scan.
On the security side
GitHub tokens are now encrypted at rest, customer Frames run with tighter sandboxing, and we tightened up a handful of permission checks across the API. Nothing you’ll notice day to day. All things worth doing.Questions or feedback:support@withnubo.com or Discord.Bring your own servers, push to deploy, see what’s actually happening, and keep your streak alive
Big one. Self-hosted Agents let you run Frames on your own servers. The managed platform gets push-to-deploy from GitHub, preview URLs for every pull request, one-click rollback, and status that updates the moment something changes. There’s a new metrics tab on every Project, a streak counter in the sidebar, transactional email for the things you’d want to know about, and a sidebar that gets out of your way. No YAML, no runners.Introducing self-hosted Agents
Push to deploy
[skip ci]or[ci skip]in a commit message skips that push.- Ignored paths (e.g.
docs/**,*.md) skip builds when only matching files changed. Useful in monorepos or for docs-only commits. - Auto-deploy can be toggled off if you’d rather trigger builds manually.
Personal access tokens for scripted clients
Anything automated that talks to Nubo (CI runners, deploy bots, your own scripts) should now use a personal access token instead of your login session. Create one in Settings → Developer tokens, give it a name and an optional expiration, and send it asAuthorization: Bearer nubo_pat_....You see the token exactly once at creation. We store it as a hash, never in plaintext, and you can revoke it instantly from the same page. Give each integration its own token so a leak or a team change only affects that scope. See API authentication.Date-based API versioning
Pin your API client to a specific contract with theNubo-Version header:- Most releases ship under the same date. Bug fixes, new endpoints, and tuning don’t move your pin. A new version is only cut when a change would actually break existing clients (field removed, type changed, validation tightened).
- Unpinned clients get the oldest supported version, so a new version never silently upgrades your integration.
- Responses include a
Nubo-Buildheader naming the exact build that served them, useful for confirming what your client actually got. - Old versions overlap new ones for at least one release cycle before being retired.
Preview deployments for every PR
One-click rollback
Cancel a deploy in progress
Pushed the wrong commit, or watching a doomed build run to the end? Hit Cancel on a still-building deploy and Nubo stops it. Your Frame stays on whatever was already running, so there’s no harm in pulling the cord. See Cancel a deploy.Stop and start a Frame
Hit Stop to take a Frame offline: replicas scale to zero on our cloud, the container stops on a self-hosted agent. Hit Start to bring it back. Config, deploy history, and domains stay where they were. See Stop and start a Frame.Live Frame status
A real deploy history
Build logs, captured on every build
Every build’s full output is captured the moment the build finishes, success or failure. Build logs are kept for 7 days. The latest deploy of each Frame is kept on top of that, so you’ll always have the most recent log even if older ones have aged out. Past 30 days, we return an “expired” signal so you can tell aged-out logs from a real fetch error.Live runtime logs
The Frame’s Logs tab now streams live lines from your running app, not just build output. Open the tab while a Frame is online and you’ll see what your code is printing right now, with no refresh and no log file path to remember. Multiple tabs subscribed to the same Frame all see the same stream, and the line ordering matches what your app actually emitted.Custom domains for any Frame
Bring your own hostname. Add a custom domain from the Frame’s Domains tab, point your CNAME or A record at the value Nubo gives you, and we handle TLS. Domains are managed per Frame, so the same Project can serveapp.example.com from production and staging.example.com from your staging Space. Works the same on self-hosted Agents under your wildcard. See Custom domains.Auto-pause for crashlooping Frames
If a Frame crashes or runs out of memory five times in a row, or stays stuck pulling its image for more than three minutes, Nubo scales it to zero and shows abackoff_tripped reason on the status. The next push (or a manual Deploy) scales it back up, so a fresh image clears the trip. The platform takes a stuck Frame out of the loop until you ship a fix.A metrics tab for every Project
Open any Project and there’s a new Metrics tab in the header. It answers the “how is this thing actually doing?” question:- Health at a glance: total Frames, how many are online, how many need attention.
- CPU and memory: the last 7 days as area charts.
- Build performance: p50, p95, and average build time over the last 14 days, so you can spot when builds start creeping up.
- Per-Frame breakdown: replicas, domains, deploy count, failure count, mean time to recover from a bad deploy, and the time of the last deploy. Sortable by any column.
- A 14-day deploy bar chart with success and failure layered, so flaky runs stick out.
Build a streak
The sidebar has a new activity widget at the bottom. It tracks how many days in a row you’ve shipped something and rewards you with milestones as you climb:- 3 days: heating up
- 7 days: on fire
- 14 days: blazing
- 30 days: diamond
- 50 days: legend
- 100 days: GOAT
Email notifications
We now send transactional emails for the things you actually want to know about:- Welcome when you sign up.
- Replies on your support tickets, and a heads-up to our team when you open one.
- Account state changes (suspended, reinstated).
- Build or deploy failures on your Frames, with the last 30 lines of the build log right in the email so you don’t have to log in to see what blew up.
- Custom domains when they’re connected or removed.
support@withnubo.com.Frame controls in the sidebar
Click any Frame and you’ll see a new control strip at the top of the sidebar:- Redeploy: kick a fresh deploy from the latest commit on the tracked branch.
- Stop / Start: toggle replicas to zero and back without leaving the page.
- Open: jump straight to the Frame’s primary domain.
Pull from your organization repos
If you installed the Nubo GitHub App on an organization but only saw your personal repos when creating a Frame, that’s fixed. The repo picker now spans every installation you have access to on GitHub: personal account first, then each org you belong to. Repos with the same name across different owners are now keyed by full path, so no more collisions.A sidebar that gets out of your way
A visual refresh
The architecture canvas, Frame tiles, Frame sidebar, and metrics view now share the same console-style look as the home dashboard: flat surfaces, mono captions, clean status pills. No more status-tinted gradient backgrounds. Status lives in a small dot and a label, so failed Frames stay easy to spot without painting half the sidebar red.Other fixes
- The “New Frame” repo picker no longer flickers and re-fetches every 15 seconds while it’s open.
- The Frame status dot now correctly shows red for
failedFrames (was reading as the neutral “unknown” color). - Deploy timestamps in the metrics view render as readable dates instead of “Invalid Date”.
- The architecture canvas is now bounded in height and scrolls inside its own box, so a project with many Frames doesn’t push everything else off the page.
- Build logs panel is capped at a sensible height so a chatty deploy doesn’t make the sidebar run the full viewport.
- Updating a Frame’s settings no longer affects unrelated fields.
- Fetching a single Frame via the API now works correctly under the full path.
support@withnubo.com or Discord.Major system changes
You may notice that Nubo feels faster and performs more reliably. This is because we have been making some significant changes under the hood. At its core, we have chosen to do the infamous Rust rewrite.Over the past few months, we have been slowly adopting and rewriting critical systems in the Rust programming language. Rust is known for its memory safety and great performance. This is in an effort to make Nubo perform more faster and consistently.Other fixes
We have been working hard with squashing bugs and making other smaller improvements. Below is a list of some of those fixes:- We fixed an issue with querying user repositories
- An issue that caused 500 errors to display for deprecated Projects
- Space deletion is now working properly
Conclusion
That’s a wrap for this release notes. We hope you enjoyed these new updates. If you have any feedback, feel free to email us atsupport@withnubo.com or join our DiscordExperience Nubo in light mode

A brighter and more customizable dashboard
We are excited to introduce a new variation of our dashboard – Light Mode! This new option offers a cleaner, brighter viewing experience for those who prefer it, while also improving accessibility. We hope that this will offer a more personalized experience while using Nubo; enabling users to more confidently release software.Conclusion
That’s a wrap for this release notes. We hope you enjoyed these new updates. If you have any feedback, feel free to email us atsupport@withnubo.com or join our DiscordJanuary 7th, 2026

UI/UX Improvements
Project Table Display
Connection reliability
The reliability of our product is priority number one. We put in hard work to ensure that the connection between the frontend and backend stays strong to ensure that our users have little issues with connection.Other updates
- Fixed cursor inconsistencies
- Bugs with invalid .env file upload
- Text size adjustments on larger screens
Conclusion
That’s a wrap for this release notes. We hope that you enjoy these new updates. If you have any feedback, feel free to email us atsupport@withnubo.com or join our DiscordStatus popups, Env file uploads, and Design changes
Real-time status popups

Upload environment variables (.env)

.env file. Simply select the “Import variables” button in the Frame’s settings.Design changes

Other updates
- We have made performance and organization improvements to the Project’s Architecture. Things should feel a bit more smooth.
Conclusion
That’s a wrap for this release notes. We hope that you enjoy these new updates. If you have any feedback feel free to email us atsupport@withnubo.com or join our DiscordArchitecture, Nubo status embed, and other minor fixes
Architecture

Other updates
- Added a toast message that syncs with our Status Page for alerting
- Fixed log duplication issues
- Added a better Frame display and settings on mobile
Conclusion
That’s a wrap for this release notes. We hope that you enjoy these new updates. If you have any feedback feel free to email us atsupport@withnubo.com or join our DiscordMobile, docs, and design updates
Mobile improvements
We have spent the majority of the last few weeks making many improvements to the dashboard on mobile screens. We still have some more work to do. For now, the experience on mobile has been substantially improved.Design updates
We have also made some design changes to our sidebar. Including color, sizing, and layout changes.Documentation
Finally, we have added Golang docs and language tutorials to our documentation in order to help beginners.Conclusion
That’s a wrap for this release notes. We hope that you enjoy these new updates. If you have any feedback feel free to email us atsupport@withnubo.com or join our DiscordNew landing page, docs, blog, and status page
Woah, that’s a pretty big update. Yeah, we have been hard at work making Nubo a more suitable environment for launching the best software products.Let’s break down these changes:A fresh new landing page

Documentation
Writing documentation is always so much fun! Will many read it, probably not. But hey, at least it’s here. We have created guides for each language and framework that we support.We will be expanding and adjusting the documentation as needed. The docs are available now on the site that you are currently on. Simply click “Documentation” at the top left.If you notice any issues or want to contribute. Submit a pull request on our GitHub repository.Is it down or just me?
Stay up to date on the status of Nubo with our brand new status page. There’s not really much more to discuss about this.Configure your projects and your profile
We have also shipped new Project settings and User settings pages.Project settings

- Project metadata (name and description)
- Spaces (create, edit, and delete)
- Danger actions (deleting project)
User settings
User settings lets you configure the following:- First and last name
- Company
Other additions and fixes
- The dashboard is now slightly more responsive (still have some work to do)
- Made some UI/UX changes to the sidebar
- Added a new snazzy new dropdown for selecting a Space
- Added better page titles
- Fixed other UI inconsistencies
Conclusion
That’s a wrap for this release notes. We hope that you enjoy these new additions. If you have any feedback feel free to email us atsupport@withnubo.com or join our Discord