Skip to content

Reliability Feedback and Private Support

AgentFEM offers an optional minimal anonymous reliability signal to improve the free, open-source software. Telemetry is off by default. No CLI outcome is collected, queued, retried, or uploaded unless the user explicitly opts in. Finite-element and AI workflows remain fully independent of this service.

Voluntary community support

Community support is not telemetry. After a healthy first installation or an important upgrade, AgentFEM may show one short invitation per major/minor release series:

agentfem support
agentfem support --after-upgrade --json

The default command performs no network request and no account action. It can remember locally that the invitation was shown, or that the user has already supported the project; that record contains no account identity or token. An AI agent must ask before checking or changing a user's GitHub account.

With explicit consent, an existing authenticated GitHub CLI can be used for a one-command Star:

agentfem support --star

This command is never called by installation, upgrade, doctor, or ordinary simulation. It uses the GitHub CLI's existing login, saves no token or account identity, and records the completed choice locally so later releases do not ask again. A read-only status check remains available separately:

agentfem support --check-github --json

If the user supported the project through another route, the choice can be recorded locally without contacting an account:

agentfem support --acknowledge supported_elsewhere

AgentFEM never stars, follows, posts, or uploads anything automatically. The --star flag itself is the explicit instruction to perform that one action. A Star, Discussion, citation, or installation report never changes software access, numerical behavior, verification, support priority, or update availability.

Distribution signals are different

PyPI and conda-forge accumulate package availability and aggregate download signals as people install normal releases; pip and mamba are installers, not social networks. TUNA is a synchronized access route, not a per-project rating system, and mirror traffic should not be presented as an upstream download count. AgentFEM therefore never asks an installer to manufacture engagement. Public trust should come from maintained releases, reviewed conda-forge recipes, reproducible reports, independent use, citations, and voluntary GitHub participation.

What basic reporting contains

Basic reporting requires explicit consent:

agentfem telemetry status
agentfem telemetry basic            # explicit opt-in
agentfem telemetry on               # compatible alias
agentfem telemetry off
agentfem telemetry route auto       # or: global / china

Selecting a route does not enable telemetry. Turning reporting off revokes consent and deletes every unsent automatic event, retry/backoff record and local event preview. Local scientific results, failure diagnosis and user-created support bundles are unaffected.

An upgrade does not treat a historical mode=basic setting as consent because older releases did not record whether that value came from a user or the old default. Such configurations migrate to off, and their unsent events are discarded. A current explicit-consent record is retained. Operators may also opt in for a process by setting AGENTFEM_TELEMETRY=basic; endpoint or route environment variables alone never authorize reporting.

One event contains only:

  • AgentFEM, Python, DOLFINx and petsc4py versions;
  • operating-system family, CPU architecture and AgentFEM platform route;
  • MPI vendor and rank count;
  • CLI command, completed/failed status and a coarse duration bucket;
  • for a failure, its stable AFM code, execution stage, exception class and an anonymous failure fingerprint.

It never contains model definitions, meshes, material parameters, source code, project or file names, filesystem paths, result values or fields, exception messages, or tracebacks. Events are capped at 8 KiB, a maximum of 64 events is queued locally, successful use is sampled at most once per day, and delivery has a 1.5-second total network budget followed by exponential backoff. Network failure never fails a simulation. The event does not contain the client's activity timestamp; the collector supplies only the UTC day used for aggregate reliability counts.

After opt-in, use agentfem telemetry show-last to inspect the exact latest event, including after successful delivery. This local snapshot follows the same strict schema; agentfem telemetry off deletes it together with every unsent event. If the first project-owned endpoint is temporarily unavailable, AgentFEM tries the next reviewed route within the same bounded delivery budget. It sends an event through the first successful route only. If all routes are unavailable, AgentFEM keeps only the bounded local queue and never fails a simulation. There is no background sender: delivery is attempted only from an opted-in CLI process or an explicit agentfem telemetry flush command.

Repeated failure and Agent assistance

Failure repetition is counted locally by a message-free fingerprint. After the same failure occurs three times in one AgentFEM version, the CLI suggests:

agentfem diagnose
agentfem assist --force

diagnose explains the latest execution locally. assist creates a private directory containing a task for Codex or another AI agent, sanitized execution structure, runtime inventory and integrity manifest. Nothing is uploaded.

For a report that the user can inspect and send manually:

agentfem feedback --output agentfem-feedback.zip

Creating a GitHub issue is a separate, explicit action and requires an authenticated GitHub CLI:

agentfem feedback --github

AgentFEM first searches for an open issue carrying the same fingerprint to reduce duplicates. The issue contains only the sanitized report; confidential model evidence must never be attached automatically.

This escalation benefits the reporting user as well as the project: one confirmed report can lead directly to a diagnosis, bug fix, clearer message, or generally useful capability. It is never an automatic extension of basic reporting.

Collector boundary

The reference collector in services/reliability-collector/ validates the same strict schema and stores daily aggregate counts. Random delivery IDs are retained for seven days only for retry idempotency. It does not store raw events, source IP addresses, user identities, exception text, or scientific data. The 0.3.1 endpoint is project-owned and passed health, rejection and aggregation smoke tests before publication; an unowned placeholder remains forbidden.

Independent delivery routes

The packaged endpoint manifest can declare more than one reviewed HTTPS route. auto uses the declared order and remembers the last successful route; global or china moves that reviewed route first. AgentFEM does not infer a user's location from an IP address, locale, or model path. One batch stops after the first accepted response, so failover does not intentionally duplicate it.

The global Cloudflare route and Tencent Cloud route are independent aggregate collectors. Both validate the same exact schema and immediately reduce valid events to daily counters. The Tencent function never reads or stores Function URL headers such as the transport address, and its private COS bucket accepts only aggregate objects through an SCF runtime role. Route failure changes only delivery; it never changes, enriches, or reinterprets a scientific result. The deployable Tencent reference and contract tests live in services/reliability-relay-tencent/.