Skip to main content

Endpoints

Check every dev machine for compliance.

Every deployment runs its own endpoint-control service beside the gateway. There is no Anyray-run fleet: hosts enroll with your service, and the evidence stays in your Postgres.

Choose how checks run

ModeRuns checksEvidence shown in AnyrayRemediation
Built-in agentThe signed fleetd package enrolled with your deploymentSource anyray, with direct agent freshnessReviewed Anyray scripts can run through the agent
Customer-managedJamf, Intune, Kandji, Fleet, CrowdStrike, SentinelOne, or a custom control planeThe platform name and the last report receiptMonitor-only in Anyray; your platform owns configuration writes

Both feed the same service, a host can be covered by either, and customer-managed evidence is labelled with its source. A host that stops reporting drops out of compliance scoring after seven days.

Where evidence is stored

Your endpoint-control service stores all evidence in its own Postgres. Anyray receives only a fleet rollup on the metering lane: reachability, host and compliance counts, failing-policy counts, and the policy-pack version. The retained fields:

RecordRetained fields
OrganizationInternal organization ID, organization name, gateway URL and hostname, optional Billing tenant ID, and creation time.
CredentialsSHA-256 hashes of enrollment secrets, osquery/orbit node keys, and customer-managed connector tokens; their organization or host association; node-key kind or connector source; and creation time. Raw credentials are returned once and are not retained.
HostInternal host and organization IDs; SHA-256 hashes of the hardware and osquery UUIDs; hostname; platform; evidence source; last evidence receipt time; and creation time.
Policy configurationInternal policy and organization IDs; name; reviewed osquery query; critical flag; platform; description; resolution; optional remediation script name; and per-organization disabled policy names.
Policy resultInternal host and policy IDs; pass, fail, or a null value for unknown; last update time. No evidence text.
Remediation audit (built-in agent)Execution ID and stable sequence; host, organization, and optional policy IDs; reviewed script name; operator or policy trigger; status; exit code; attempt count; lease, expiry, creation, and completion times. The legacy output field is kept empty; reviewed script contents live in code, not the database.

Raw device IDs are hashed at the store boundary; serial numbers, users, inventory, command output, and evidence text are never retained. Rows persist until an operator with provisioning:manage deletes the host (host id from Machines → End-point fleet or GET /admin/endpoint/hosts):

Delete one host record
curl -fsS -X DELETE "https://<your-gateway>/admin/endpoint/hosts/<host-id>" \
-H "Authorization: Bearer $ANYRAY_ADMIN_TOKEN"

Deleting the organization (delete /admin/orgs/:orgId on the service's own admin API, gated by ANYRAY_ENDPOINT_CONTROL_ADMIN_TOKEN) cascades to every row. User-scoped GDPR export and erasure skip these rows: the evidence schema has no user-to-host mapping.

Connect an existing platform

Your endpoint control plane must run equivalent checks and reach your deployment's endpoint host over HTTPS. osquery-based systems (Fleet) use the catalog's queries directly; other platforms map native checks to the catalog's stable policy names.

1
Create a reporting connector

In the console, open Machines → End-point fleet. A security_admin (or the owner) connects the reporting platform, which returns one aer_… token, shown exactly once; the same pop-up rotates and revokes it. Never deploy it to endpoints: devices report to your control plane, which reports to Anyray.

2
Fetch the enabled policy catalog
Control-plane request
curl -fsS https://<your-endpoint-host>/api/v1/evidence/policies \
-H 'Authorization: Bearer aer_synthetic-connector-token'

The credential selects the organization and evidence source; the request cannot override either. Each enabled policy includes its stable name, platform, criticality, description, resolution, and templated osquery SQL.

3
Run or map the checks

Run each applicable osquery query, or map an equivalent native check. A policy reports pass, fail, or unknown. Keep inspected configuration values inside your environment.

4
Report normalized results
Control-plane request
curl -fsS https://<your-endpoint-host>/api/v1/evidence/report \
-H 'Authorization: Bearer aer_synthetic-connector-token' \
-H 'Content-Type: application/json' \
--data '{
"device": {
"id": "device-synthetic-001",
"hostname": "workstation-synthetic-001",
"platform": "darwin"
},
"results": [
{
"policyName": "Anyray - Codex routes through the org gateway",
"response": "pass"
}
]
}'

A successful report returns HTTP 202 with the accepted result count, source, and receipt time. An unknown, disabled, or repeated policy name rejects the whole report. The report replaces that device's previous snapshot: any enabled policy you omit becomes unknown.

5
Verify source and freshness

Under Machines → End-point fleet, confirm the host shows the expected evidence source and a recent Last evidence value. Customer-managed hosts do not show the Run remediation action.

Reporting tokens are control-plane credentials

One valid connector token can report evidence for devices in its organization. Keep it in the endpoint platform's server-side secret store, rotate it after a suspected leak, and revoke it when the integration is retired.

Report contract

The report body accepts only these fields:

FieldRequiredContract
device.idyesStable device identifier, 1 to 128 characters using letters, digits, _, ., :, or -. Anyray stores only a source-qualified sha256.
device.hostnamenoValidated metadata, up to 64 characters.
device.platformnodarwin, linux, windows, or unknown.
resultsyes1 to 128 unique policy results forming the device's current snapshot; omitted enabled policies become unknown. The complete JSON body is capped at 64 KiB.
results[].policyNameyesExact name from the authenticated catalog.
results[].responseyespass, fail, or unknown.

The API does not accept inventory, configuration values, environment values, users, command output, arbitrary evidence text, or scripts. Prompt and response content never enters this path. The built-in agent's remediation path is separate and can retain a script's output when you turn that on: Remediation output.

Remediation output

When a remediation script fails, an operator otherwise sees only its exit code. Anyray can retain the script's output so the failure is diagnosable: off unless you enable it, and the only device-derived free text the end-point service stores.

Enable it by setting ANYRAY_CONTENT_KEY (32-byte hex) on the end-point service; with no key set, output is discarded on arrival, and ANYRAY_CONTENT_MODE=off disables it outright. Know what it captures first: the shipped scripts print per-user diagnostics, so retained output contains OS usernames and home-directory paths, and the credential filter strips secret-shaped substrings only.

When on, output is truncated to 8 KiB (beginning and end kept), encrypted at rest with AES-256-GCM under your key, unreadable after 30 days and then deleted (the run's audit record stays), and readable only with the content-read capability: a viewer or operator sees the exit code only. The setting is read from the end-point service's environment, so changing the content mode in the console does not turn capture off here.

Review what runs on a machine

Every check and every remediation script is readable in your console before it runs anywhere. Select a policy under Machines → End-point fleet to see the literal osquery SQL the agent executes, the platforms it targets, the operator guidance and resolution steps, the remediation script's full contents inline when one exists (so what runs as root is on screen beside the check that triggers it), and whether Anyray authored the check (Anyray-authored checks).

The Remediation scripts panel lists every script the service can run, with full contents. Scripts are compiled into the service's image, so nobody (Anyray included) can add one without deploying a new image; a separate Fleet server's script library is not shown here. Each policy maps to exactly one script name, and dispatch does not branch on OS. The pack's one PowerShell remediation has no dispatching policy, so Windows hosts are monitor-only in practice.

Anyray-authored checks

A deployment runs the checks in its own image. Anyray can also deliver checks to a running deployment without an upgrade: a new check for a tool that bypasses gateways, or a corrected query for one already in your image. The lane is on by default and you can switch it off. Its limits:

  • Every delivered check is signed with the key pinned in your gateway image and verified offline, so a compromised control plane cannot forge one.
  • A delivered check is read-only: an osquery SELECT whose only effect is a pass/fail in your own database. It can never carry or name a script, and nothing on this lane can add to the compiled-in script list.
  • It is always monitor-only and never critical, so it cannot auto-remediate or move your failing-critical count.
  • While an Anyray query stands in for an image check, that check's own remediation is suspended (labelled monitor-only while overridden); self-healing resumes when the fix lands in an image you upgrade to.
  • Every check is listed in your console with its full logic (a replacement also shows the query it replaced), and every delivery lands in your audit log as apply_policy_bundle by actor anyray-policy-push, naming the revision and what it added, replaced, or withdrew. The first delivery ever shows a one-time console notice.

Delivered checks reach the built-in agent and any connected evidence connector, the same two paths your image's checks already take.

To turn the lane off, open Machines → End-point fleet and expand Anyray-authored checks. Turning it off (needs the provisioning capability) withdraws every Anyray-authored check immediately and refuses future ones. You can also disable an individual Anyray-authored check like any other, without switching off the lane.

Remediation boundary

Anyray records customer-managed failures but does not issue commands through the customer's MDM or EDR; run remediation through that platform with its own approval and audit controls. The direct remediation loop is available only to hosts enrolled with the built-in agent.