Household → Hours of Internet (administrators; a function of the subscription, open to every installation during the beta) sets, for each child and teenager, the hours when Internet answers: a week of 15 minute slots painted with the pointer (the time at the top and bottom, a line per quarter of an hour; the week starts on Sunday where the country does), or typed under the grid (Or type the hours: the days — every day, Monday to Friday, Saturday and Sunday, or one day —, a start and an end in quarters of an hour, then Open these hours or Cut these hours; every control reachable with the keyboard). Nothing applies until a parent turns the hours of a person on; the page proposes hours by age (child: weekdays 07:00–08:00 and 16:30–19:30, weekend 08:00–20:00; teenager: weekdays 07:00–22:00, weekend 08:00–23:00).
Outside the hours, every name is blocked for the devices of the person
(reason "schedule" in the reports), whatever the pauses and the rules,
except the names always permitted and their subdomains (school sites;
by default index-education.net and ecoledirecte.com, 100 names at
most), to which the other protections still apply. The names of the box
and of the local network keep answering. A parent gives extra time in one
click (+15, +30 or +60 minutes, from now or from the end of the current
hours, 12 hours ahead at most) and can end it. Adults never have hours.
The times are those of the box. The cut is not always instant: devices
keep the answers they already have for their lifetime (TTL) and the
connections already open.
Right now (same page): a parent cuts Internet at once for 30 minutes,
an hour or until the morning (the next opening of the hours, or 07:00),
whatever the hours and the extra time (reason "schedule"), or starts the
homework mode for one or two hours (social networks, videos and games
blocked, reason "category"). PUT /api/v1/people/{id}/mode
{"mode": "cut" | "homework", "duration": "30" | "60" | "120" | "morning"},
DELETE /api/v1/people/{id}/mode.
Bypass: a device of a child or teenager used during a cut (it asked Warda at least 5 minutes after the cut began) then silent for 15 minutes gives a notice: when it still answers on the network (ARP, IPv4) but no longer asks Warda, "a VPN or another DNS?"; otherwise "switched off, or on another network?". Used means at least 3 queries to sites (not the services the systems call on their own) in one step of 5 minutes; a cut that began more than a day ago (hours closed all week) is not watched. Warda cannot be sure: the notice says so. The names of VPN, proxies and encrypted DNS asked by a minor's device are blocked (answered "does not exist", so that iCloud Private Relay and the browsers fall back to Warda) and told too, once a day per device and name.
Time a day (same page): for games, videos and social networks, a
time allowed each day (15 minutes to 8 hours), whatever the hours; then
the category is blocked until midnight (reason "category"). A step of 5
minutes counts from the second name of the category asked in it; the time
used is kept on the box (category_usage, 7 days).
PUT /api/v1/people/{id}/limits {"category": "games", "minutes": 60}
(0: no limit).
School holidays (same page): during a period, every day, Sunday
included, takes the hours of Saturday, for every child, while During the
school holidays, the hours of Saturday every day is on (the default).
Off, the holidays keep the hours of the week; the badge "On holidays" still shows.
PUT /api/v1/vacations/hours {"saturday": false} (answers the view of
the hours; holiday_hours in GET /api/v1/schedules). GET/POST /api/v1/vacations
{"first_day": "2026-10-17", "last_day": "2026-11-02"},
DELETE /api/v1/vacations/{id}. The official calendar of a country and a
region can be imported from OpenHolidays
(open data): the coming year, checked again when the last import is a
week old (the holidays of the region and of its school groups only); the
service is asked only when an administrator opens that part or imports,
and only the country, the region and the language leave the box.
Imported holidays removed by hand are not imported again
(GET /api/v1/holidays/countries?lang=FR,
GET /api/v1/holidays/regions?country=FR&lang=FR,
POST /api/v1/holidays/import {"country": "FR", "region": "FR-HF", "lang": "FR"},
DELETE /api/v1/holidays/import stops the weekly import).
School zones (from 0.8.5; internal/holidays). Where a country
gives its school holidays by zone, the zones come first: the list
Zone or region has two groups, School zones and Regions, with
"In this country the school holidays go by zone: choose your zone (or
your region, which gives the holidays of its zone)." OpenHolidays files
the zones in two ways, and Warda reads both: as groups (its /Groups,
and the groups each region names) or as regions of the category "zone"
at the top of the country. Only geographic groups are zones: a group of
the category "school type" (asked in every language, so that its English
category is read) is never offered as one, nor, in a country other than
France, the Netherlands and Belgium, a group the regions name that
/Groups does not describe. A zone is imported like a region
(POST /api/v1/holidays/import {"country": "FR", "region": "FR-ZB", "lang": "FR"}) and refreshed every week: the whole country is asked,
then the holidays of the zone kept, whether filed under the zone or
under its regions. A region also gets the holidays filed under its zone,
and the holidays filed under another zone only are no longer taken for
those of the whole country. GET /api/v1/holidays/regions gives the
zones first (kind zone), then the regions. A country without zones
keeps its list of regions as before.
What OpenHolidays gives, as read on 2026-10-13 (the list follows the service by itself):
| Country | Zones offered |
|---|---|
| France | Zone A, Zone B, Zone C (regions of the category zone, FR-ZA, FR-ZB, FR-ZC, each with its academies); the regions stay offered and give the holidays of their zone |
| Netherlands | the three school regions: North, Central, South (NL-NO, NL-MI, NL-ZU) |
| Belgium | the three communities: French, Flemish, German-speaking (BE-FR, BE-NL, BE-DE) |
| Germany, Switzerland | no zone: the groups OpenHolidays gives there are kinds of schools of a state or a canton (general and vocational schools of Mecklenburg-Western Pomerania; primary, secondary or vocational schools of a few cantons), not places, so they are not offered; choose the region (the state, the canton, the municipality) |
| Austria, Czechia, Italy, Luxembourg, Poland, Portugal, Spain | no zone: the regions, as before |
The CI imports a French zone against the real service when it offers one
(scenario holidays-import; a warning otherwise).
The calendars cover the countries of the European Union that OpenHolidays
publishes; the CI imports those of France, Germany, Belgium, the
Netherlands and Poland at each run (scenario holidays-import). Portugal
and Sweden have only their public holidays there, and Denmark, Finland,
Greece and Cyprus are not covered yet. The list of the countries comes
from the service: they appear in it by themselves when OpenHolidays adds
them.
Requests: a child opens http://warda/ask on their device (served
over plain HTTP too: their device has not accepted the certificate of
the box). No sign-in: Warda knows the device by its address, only on the
allowed networks, and only a device given to a child or a teenager can
ask: 15, 30 or 60 minutes more of Internet or of a category used up, with
a short message; one request at a time, six a day at most. The parents
accept or refuse from the dashboard or the Alerts page; an accepted
request gives the extra time (Internet: also over a cut made by a parent;
category: minutes more today). GET/POST /api/v1/ask (the device),
GET /api/v1/requests, POST /api/v1/requests/{id}/accept|refuse.
A home filter cannot see a device that leaves the network (mobile data, a friend's hotspot), unless the device is enrolled in the protection outside the home (from 0.8.0, subscription): its queries then come back to the box, with its hours, its cuts and its categories, and a minor's device that switches to mobile data at home is told. A device not enrolled, or an app with its own DNS, still escapes: lock the phone with the tools of its system as well (Family Link, Screen Time).
API: GET /api/v1/schedules, PUT /api/v1/people/{id}/schedule
{"enabled": true, "grid": "<672 characters 0 or 1 from Monday 00:00>"},
POST /api/v1/people/{id}/bonus {"minutes": 30},
DELETE /api/v1/people/{id}/bonus, PUT /api/v1/schedule-allow
{"domains": [...]}. A function of the subscription answers 402 on the
free plan once subscriptions open. A box whose plan lapses stops applying
the hours, the school holidays, the limits by category, the modes and
the time given, and keeps them: they apply again within a minute when the
plan comes back (see Plans); the pause of a person can always
be ended (DELETE /api/v1/people/{id}/mode).