{% extends "curb_base.html" %} {# Team › Policy: what the org policy asks, whether this machine meets it, and what waits. #} {% block part %} {% if not joined %} {% call empty.state("team", "Share one agent policy across your team") %}

With Flanner Mesh, your organization signs one set of rules and every device applies it. This machine has not joined a team, so there is nothing here yet.

Join a team {% endcall %} {% else %}
{% set src = "Signed by your organization, and checked here before anything changes." ~ ((" Last checked " ~ ago(view.checked_at) ~ ".") if view.received and view.checked_at else "") %} {% call k.head("Rules your organization sets for every agent. This machine applies them.", src) %} {% if view.received and view.pending %}{{ k.act("Review version " ~ view.pending.version, "policy", "btn-primary") }}{% endif %} {% endcall %} {% if not view.received %} {% call empty.state("team", "No policy has arrived yet") %}

Your organization has not sent this device a policy, or this device has not asked for one. Ask for it in a terminal:

{{ k.cmd("flanner curb policy --check-in") }} {% endcall %} {% else %} {% for flag in view.flags %}
About policy version {{ view.version }}. {{ flag }}
{% endfor %} {% if view.rejected %} {% endif %} {% if view.pending %}
Version {{ view.pending.version }} waits for your yes {% if view.pending.at %}received {{ ago(view.pending.at) }}{% endif %}

{{ view.pending.summary }}

{% for reason in view.pending.reasons %}

{{ reason }}

{% endfor %}

Curb applies a change on its own only when it can show the change makes things stricter, and you allowed that. Anything else waits for you.

{% endif %}

What version {{ view.version }} asks

{% for label, value in view.asks %}
{{ label }}{{ value }}
{% endfor %} {% if not shown %}

{{ k.ask_names() }} to see which locations.

{% endif %}

Does this machine meet it?

{% if view.met %}
{{ ico.icon('check', 14) }} Every agent's settings meet the policy.
{% elif not view.checked_at %}

Not checked yet. It is checked at the next session start, or at the next check-in.

{% endif %} {% for item in view.unmet %}
{{ item.label }}: {{ item.text }}
{% endfor %} {% if view.checked_at %}

Checked {{ ago(view.checked_at) }}, and again at each session start.

{% endif %}
Version {{ view.version }} on this machine {% if view.applied and view.applied_by %}version {{ view.applied }}: {{ view.applied_by }}{% endif %}
{% for label, state in view.steps %} {% if state == "done" %}{{ ico.icon('check', 12) }} {% endif %}{{ label }} {% endfor %}
{% endif %}
Apply stricter changes without asking {% if view.delegated %}{{ k.st("on", "On") }} A change Curb can show to be stricter applies on its own. {% else %}Off. Every policy change waits for your yes.{% endif %} Anything Curb cannot show to be stricter always waits for you.
{% if view.delegated %}
{% else %}{{ k.act("Turn on…", "delegation", "btn-sm") }}{% endif %}
{{ k.terminal("Check in for the newest policy now", "The web UI never contacts your organization. The terminal does, and this page then shows what arrived.", "flanner curb policy --check-in") }} {{ k.terminal("Export the policy for device management", "It writes admin-owned settings files to a folder you name.", "flanner curb policy --export ./policy-files") }}
{% call k.explain("How a policy reaches this machine", "Signed by your organization, checked here, and never loosened.") %}

Your organization signs each policy version. This machine checks the signature and the version number before anything changes. An older version is refused.

A policy only ever tightens an agent's own settings. A policy that expires stays in force until a newer one arrives.

Policies are written in your organization's console, not here.

{{ k.cmd("flanner curb policy") }} {% endcall %}
{% endif %} {% endblock %} {% block reviews %} {% if joined and view.received and view.pending %} {% call k.review_box("policy", "Apply policy version " ~ view.pending.version ~ "?", "/curb/team/policy/approve") %}

{{ view.pending.summary }}

Afterwards, your agents may be stopped from doing something they could do before.

Curb backs up each settings file for 7 days. Undo is under Fixes.

{% endcall %} {% endif %} {% if joined %} {% call k.review_box("delegation", "Apply stricter changes without asking?", "/curb/team/policy/delegation", {"on": "1"}) %}

Turn this off here at any time. Turning it off needs no approval.

{% endcall %} {% endif %} {% endblock %}