Open-source project
gradio-app/gradio avatar
gradio-app/gradio

Gradio 6.26: Python-Only Machine Learning Web Apps, From Interface to Workflow Canvas

Build and share delightful machine learning apps, all in Python. 🌟 Star to support our work!

43,539 stars3,598 forksPythonApache-2.0

At a glance

What is it?
Gradio wraps any Python function in a browser UI with minimal code, and the latest release adds a workflow canvas for building multi-step apps. This review covers the core Interface class, sharing mechanics, and where the framework's simplicity starts to bend.
Who is it for?
Adopt Gradio if you need a quick, shareable demo of a Python function or model with no front-end work, and if your app fits the one-function-to-one-UI pattern. Avoid it if you need fine-grained control over layout, complex multi-step state, or production-grade authentication, because the framework hides those details behind its simple API.
Can I use it commercially?
Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository received new commits within the last day.
What is it written in?
Mainly Python, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

What Gradio Actually Solves

Gradio targets a specific pain: turning a Python function into a web page without writing JavaScript, CSS, or managing a server. The README is explicit about the audience: anyone with a machine learning model, an API, or any arbitrary Python function who wants a demo or web application. The core promise is speed. A few lines of Python produce a browser interface that accepts text, sliders, images, and other inputs, then displays the function's output. The sharing feature, one extra parameter in launch(), creates a public URL in seconds. That is the whole pitch, and it is a legitimate one for researchers, students, and engineers who need to show a model to a colleague or a client without a deployment pipeline. The framework's scope is deliberately narrow: it wraps functions, not full applications. If your need is a quick interactive demonstration of a model's behavior, Gradio is a direct fit. If you need a multi-page product with custom styling, you will hit its limits fast.

The Interface Class: One Function, One UI

The central abstraction is gr.Interface, which takes three core arguments: fn, inputs, and outputs. The fn argument accepts any Python function, which is the key to its flexibility. Inputs and outputs accept Gradio components, either as strings like "textbox" or as instances like gr.Textbox(). The README notes that the number of input components must match the function's arguments, and outputs must match its return values. That mapping is the entire contract. For a function with multiple arguments, you pass a list to inputs, and each component lines up with one parameter in order. The same rule applies to outputs. This design is simple, but it imposes a straightjacket: the UI is a direct mirror of the function signature. If your function takes five arguments and returns three values, you get five input widgets and three output widgets, with no way to reorder or group them without restructuring the function itself. The documentation says the Interface is designed for models that accept one or more inputs and return one or more outputs, which is an honest description of its scope.

Getting Running: Commands and Modes

Installation is a single pip command: pip install --upgrade gradio. The prerequisite is Python 3.10 or higher, a hard requirement that matters if you are on an older system. The first demo is a greet function wrapped in gr.Interface, then demo.launch(). Running python app.py opens the UI at http://localhost:7860, or embeds it in a notebook if that is where you run it. Two development modes stand out. Hot reload mode: run gradio app.py instead of python app.py, and the app reloads automatically on file changes. Vibe mode: gradio --vibe app.py adds an in-browser chat that can write or edit your app using natural language. That is an unusual feature for a Python web framework, and it is aimed at iterative development. The README presents these as time-savers, and they likely are, though the vibe mode's quality depends on the underlying model, which is not described in the README. For a quick start, the commands are unambiguous and the barrier is low.

Sharing: The Gradio.live URL and Its Trade-offs

The sharing mechanism is the most distinctive part of Gradio. Setting share=True in launch() generates a public URL like https://a23dsf231adb.gradio.live. The README stresses that the model and computation run locally on your computer, while anyone with the link can interact from their browser. That architecture has clear implications. It means your machine must stay on and reachable for the duration of the share. It also means the public URL exposes your function to the internet, with no mention of authentication or rate limiting in the README. For a temporary demo among trusted colleagues, this is convenient. For anything public-facing, you are trusting Gradio's relay service and your own machine's exposure. The README does not specify how long the URL lives or what security measures exist. That is a gap you should verify before sharing sensitive models. The trade-off is explicit: zero hosting effort in exchange for running the computation on your own hardware and accepting the security posture of a generated link.

Components and the 30-Plus Built-in Set

Gradio ships with more than 30 built-in components, per the README, including gr.Textbox(), gr.Image(), and gr.HTML(). The component list is designed for machine learning applications, which means common types like images, audio, and video are covered. The flexibility of passing either a string name or a class instance is a nice touch for quick scripts. But the component set is fixed. If your input or output does not map to one of the built-ins, you must either write a custom component or pre-process your data into a supported format. The README does not describe how to extend the component library, so the boundary is unclear. For a text-to-image model, the built-ins are sufficient. For a domain-specific visualization or a custom widget, you may find yourself fighting the abstraction. The component system is a strength for standard ML tasks and a limitation for bespoke interfaces.

The Workflow Canvas: A New Direction in 6.26

The latest release includes @gradio/workflowcanvas@0.10.0, a separate package in the monorepo. The name suggests a visual canvas for building workflows, which implies chaining multiple steps rather than wrapping a single function. The README excerpt does not document this feature, so details are thin. From the repository layout, it is a distinct JavaScript package, which means it is not part of the core Python Interface class. That separation is significant: the workflow canvas likely targets more complex apps where a single function is not enough. The release cadence, with gradio@6.26.0 and the workflowcanvas at 0.10.0, suggests the canvas is still maturing. If you need multi-step pipelines with branching or state, this is the component to watch, but do not adopt it based on the README alone. The documentation is not in the README, so you would need to consult the official docs or the package source to understand its API and limitations.

Maintenance, License, and Upgrade Considerations

The project is under Apache-2.0, a permissive license that allows commercial use, modification, and redistribution with attribution. That is a low-friction choice for most organizations. The repository is actively maintained, with the last push on 2026-08-24 and a 6.26.0 release on the same day. The monorepo structure includes Python and JavaScript packages, which means upgrades can touch both sides. The pip install command with --upgrade is the standard path, but you should be aware that major version changes, like the jump to 5.0 referenced in the README badges, may introduce breaking changes. The README explicitly says it is generated from templates, so the documentation is centralized, which is good for consistency but means you should check the rendered docs for the version you install. The maintenance cost for a user is low: you depend on a single package, and the API is stable enough for the core Interface pattern. The cost rises if you adopt the workflow canvas, as it is a separate package with its own versioning.

Editorial conclusion

Adopt Gradio if you need a quick, shareable demo of a Python function or model with no front-end work, and if your app fits the one-function-to-one-UI pattern. Avoid it if you need fine-grained control over layout, complex multi-step state, or production-grade authentication, because the framework hides those details behind its simple API. Before committing, verify that your Python version is 3.10 or higher, test whether the built-in components cover your input and output types, and check the sharing URL's lifetime and security if you plan to use share=True. The workflow canvas in 6.26 is worth a trial, but it is a new feature, so confirm it handles your specific graph before relying on it.

Official sources

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
Community notes

Community notes