LuCI app for qosify (luci-app-qosify) **Current Ver 3.0.36**

luci-app-qosify

A LuCI web interface for qosify on OpenWrt.

qosify sets up CAKE traffic shaping and uses an eBPF classifier to set each packet’s DSCP field, so voice, video, bulk and best-effort traffic land in the right CAKE tin. This app puts all of it on one page under Network → qosify. From there you can turn shaping on, set your bandwidth, edit the config and the classification rules, and watch what qosify is doing. Every setting is a real qosify option; the app adds nothing of its own on top.

It is in openwrt/luci master and ships in snapshots as the luci-app-qosify package. New features reach the installer first, and the package picks them up once the upstream PR merges.

Install

On snapshots, install the package:

apk add luci-app-qosify

On 24.10, 25.12 or any other build, use the installer:

wget -O /root/qosify-luci.sh https://raw.githubusercontent.com/choppyc79/luci-app-qosify/main/qosify-luci.sh && sh /root/qosify-luci.sh install

After installing, press Ctrl+F5 once on Network → qosify. The installer adds qosify if it is missing and creates default configs without overwriting yours. It also lists its files in sysupgrade’s keep list, so the app survives sysupgrade, attended sysupgrade and owut.

The installer has these commands:

  • install: installs qosify if needed, the app and default configs, then restarts services
  • files: writes the app files only, with no packages and no restarts (for ImageBuilder)
  • reset: puts both config files back to qosify’s defaults
  • uninstall: removes the app, qosify and both configs, plus the clsact and ifb-dns that qosify leaves behind
  • migrate: switches to the luci-app-qosify package and keeps both config files

Quick start

  1. Open Overview and find the quick settings.
  2. Tick qosify.
  3. Set Upload and Download bandwidth a little under your measured line speed.
  4. Click Save & Apply.

The shipped config has QoS disabled, so nothing is shaped until you do this.

Tabs

  • Overview
    • Service status: green means shaping, amber means running but idle, red means stopped.
    • Also shows uptime, autostart, and one row per shaped interface or device.
    • A service bar with Start, Restart, Reload, Reload Rules and Stop.
    • File validity for both configs.
    • Quick settings in four tabs: Basic, Shaping, Overhead and Advanced (CAKE options).
  • Config
    • Editor for /etc/config/qosify.
    • Warns as you type about anything qosify would silently ignore or drop.
    • Quick Add forms for defaults, class/alias and interface/device sections.
    • A reference of DSCP values and qosify’s defaults.
  • Rules
    • Editor for /etc/qosify/00-defaults.conf.
    • Quick Add for ports, port ranges, IPv4/IPv6 addresses, dns: patterns and regex, and dns_c:.
    • Lines qosify would skip are reported rather than silently saved.
    • Dynamic Entries adds entries to the running qosify with a timeout, and lists or removes the live ones.
  • Status
    • Full qosify-status output, refreshed at LuCI’s interval while the tab is open.
  • Counters
    • Traffic by Class.
    • Traffic by DSCP (snapshots only).
    • Traffic by CAKE Tin.
    • DNS Entries (snapshots only).
    • Reset counters.
  • Advanced
    • Backup and Restore of both files (checked before use, 64 KB maximum).
    • Check Devices, which picks up a device that appeared after qosify started.
    • Reset both files to defaults.

Good to know

  • 25.12 and snapshots: qosify.init only applies its config on reload. After a reboot, qosify can run with no config until you press Reload. Start, Restart and Save & Apply in the app send the reload for you.
  • Stop and uninstall only remove what qosify created. Another shaper on the same device, such as SQM, is left alone.
  • Read-only users get a read-only page.
  • Unknown status: if rpcd does not answer, the page shows an amber Unknown rather than guessing. Running /etc/init.d/rpcd restart usually clears it.
  • The installer runs on ash; bash is not needed.

Links

Feedback and suggestions welcome.

8 Likes

Good job, thank you very much for your time.
I would like to be able to test your work, but at the moment I am using DSCPCLASSIFY 2.0 and I am satisfied with the results.

Good job

1 Like

No problems, if you do get time, please do. Any feedback is always helpful :+1:

1 Like

For now the only feedback i can give is if you have some screenshots of the grafical interface in you github

1 Like

Hi! I'm happy that my friend Dopam-IT_1987 inspired you. Wishing you all the best going forward.

I also use his script and his geofilter. he work fine for me

Added some Screenshots, Thanks

1 Like

This script have a gitrepository.

luci-app-qosify v2.0

v2.0 is out — the biggest update since initial release.

Quick Settings on the Overview tab lets you edit all WAN interface options (bandwidth, overhead, queue mode, NAT, host isolate, CAKE options) and enable/disable QoS without touching raw config.

QoS Active indicator next to the enable checkbox — shows whether qosify is actually shaping traffic, not just running.

Quick Add Rules on the Classification Rules tab — pick type (tcp/udp/dns), enter a port or pattern, select a class from a dropdown populated from your config, and append. Input validation catches mistakes before they hit the rules file.

DSCP class reference — collapsible panel showing your defined classes with ingress/egress DSCP codes. Default/fallback classes are excluded automatically.

Other improvements:

  • Config file validation with size and last-modified timestamps

  • Unsaved changes warning on Config and Rules tabs

  • Backup download buttons on Advanced tab

  • Auto-refresh on Overview (30s) and Status (5s)

  • Confirm dialogs on all save/upload/reset actions

  • Option name normalisation prevents duplicates when mixing Quick Settings with uploaded configs

Install or upgrade:

sh

wget -O /root/qosify-luci.sh https://raw.githubusercontent.com/choppyc79/luci-app-qosify/main/qosify-luci.sh
chmod +x /root/qosify-luci.sh
/root/qosify-luci.sh install

GitHub: https://github.com/choppyc79/luci-app-qosify

Feedback welcome.

3 Likes

luci-app-qosify v2.3.2

Big release — rewrite from the legacy Lua controller + .htm template architecture to the modern client-side JS LuCI view. Same five tabs, same install command, same single-script installer, but underneath it's now built the way official LuCI apps like luci-app-firewall ship.

What's different

  • No more luci-compat dependency — only luci-base is needed
  • File uploads handled client-side, no more CSRF / multipart POST issues
  • UCI accessed via the proper JS API, no more text parsing
  • Service controls via ubus call luci setInitAction
  • Save / Upload / Reset wait for qosify to come back up before refreshing the UI
  • Quick Settings, Service Controls and Service Status all refresh after save/upload/reset — no stale form fields or buttons
  • Notifications auto-dismiss (info 5 s, warning 8 s, danger 10 s)
  • Polling auto-refresh via LuCI's poll module (Status 5 s, Overview 30 s, pauses when tab is hidden)

What stayed the same

Same five tabs (Overview, Config, Classification Rules, Advanced, Status), same Quick Settings form, same Quick Add Config / Quick Add Rule builders, same WAN-disabled-by-default for safe first-run, same single shell-script installer, still POSIX sh / BusyBox ash compatible.

Install / Update

wget -O /root/qosify-luci.sh https://raw.githubusercontent.com/choppyc79/luci-app-qosify/main/qosify-luci.sh
chmod +x /root/qosify-luci.sh
/root/qosify-luci.sh install

Upgrading from v2.2: installer cleans up the old /usr/lib/lua/luci/controller/qosify.lua and friends automatically. Hard-refresh the browser (Ctrl-F5) after install to pick up the new JS.

GitHub: https://github.com/choppyc79/luci-app-qosify

Feedback welcome.

5 Likes

Easy steps and UI is fast. So far loving it. I'm testing more fiddling with the configs.

1 Like

Glad you like it :slight_smile: :+1:

One question for update/upgrade of OpenWrt over owut or attended sysupgrade. What is the best way to update/upgrade the OpenWrt system due to that this app is not in the OpenWrt repo?

I just would just run the install again, firstly save / download your qosify config and 00-default files and just upload them via the luci-app once its installed.

When i get some time will have a look and see if i can add functionality for this.

a good feature would be a connections tab like qosmate. to see if certain dscp markings are being applied to ports/ips.

also, if i set a classification rule on a specific port for voice dscp with priority, do i also need to change anything in 'Config' tab?

Connections tab: Not worth adding. qosify doesn't expose per-connection DSCP state, so the best we could do is guess based on your rules — which you can already read yourself. No real value.

Config tab question: No, you don't need to change anything in Config. Adding the rule in Rules tab is enough.

Small Update -

v2.3.3

  • Added VA and DF to DSCP list

  • countRules strips at first # to match daemon's inline-comment handling

  • Upload rule validator: same inline-comment fix

  • IPv4/IPv6 Quick Add: reject CIDR (daemon uses inet_pton)

  • Defaults Quick Add dscp_* selects: offer class names alongside DSCP codepoints

  • Sysupgrade survival: writes /lib/upgrade/keep.d/luci-app-qosify for configs, copies installer to /root/qosify-luci.sh; ACL grants /usr/sbin/tc exec; uninstall cleans both up

wget -O /root/qosify-luci.sh https://raw.githubusercontent.com/choppyc79/luci-app-qosify/main/qosify-luci.sh
chmod +x /root/qosify-luci.sh
/root/qosify-luci.sh install
2 Likes

could this app have any improvement over the regular Luci SQM QoS?

I didn't see any difference whatsoever vs the QoSMate

luci‑app‑qosify can offer improvements over the regular LuCI SQM QoS app — but only in situations where qosify itself provides benefits. If your traffic or connection doesn’t make use of qosify’s DSCP marking or per‑app classification, then it will behave the same as SQM or QoSMate.

Why:

  • SQM is a shaper (CAKE) with basic built‑in heuristics.

  • qosify is a classifier (eBPF DSCP marking) that feeds CAKE better metadata.

  • luci‑app‑qosify just provides a GUI for qosify — it doesn’t change how qosify works.

3 Likes

what is the actual Overhead type that I need to pick when is my openwrt one router conencted to a Fiber modem that is in bridge mode?

Ethernet 44 mpu 84?