# FAQ

## General

### Does LoopDesk run my AI model?

No. Your pipeline runs the model and submits the suggestion. LoopDesk routes the decision and captures the outcome.

### Can I use any model provider?

Yes. LoopDesk is model-agnostic. You submit text/JSON suggestions and a confidence score; we don't care what produced them.

### Is the API rate-limited?

Yes, per project API key. Defaults are generous for normal pipeline traffic. If you hit limits, contact us — we'll usually raise them.

### Is there a self-hosted option?

The repo is open and TanStack Start runs on any Cloudflare Workers or Node host. Database is Postgres. There's no licensing blocker to self-hosting; you give up the managed migrations and dashboard.

## Routing

### What happens if I don't send a confidence score?

The router treats missing confidence as `0` — the item always queues. Always send a number, even if it's a rough heuristic.

### What if I don't have a calibrated confidence score?

You can still use LoopDesk by routing on risk flags only. Set `auto_threshold = 1.1` (unreachable) and decide everything via flag rules. You'll lose the "auto-approve the boring middle" benefit until you can calibrate.

### Can routing be customized per item?

Policy is per-project, not per-item. If you need per-item logic, encode it as risk flags in your pipeline.

### What's the difference between `risk_flags` and `metadata`?

`risk_flags` change where the item goes. `metadata` is for analytics/context only. If a field could ever change routing, it's a flag.

## Reviewers

### How do reviewers sign in?

Solana wallet, via SIWS. No email, no password. See [Sign-In-With-Solana](/hitl-docs/authentication/siws.md).

### Can I have non-wallet reviewers?

Not currently. Wallet-only is a deliberate constraint — it keeps the auth surface small and gives us a clean identity for the audit trail.

### How are items assigned?

By default, items sit in the project's pool and any eligible reviewer can pick them up. You can also explicitly assign items via the API or admin UI.

### What if a reviewer disappears mid-decision?

Items have a soft lock on view. If a reviewer holds an item without deciding for `max_queue_age_minutes`, the lock releases and the item is auto-escalated.

## Learnings & exports

### What format are learning exports?

CSV and JSONL. Schema is documented in [reference/schema](/hitl-docs/architecture/schema.md). Stable across versions.

### Can I delete a learning?

Yes — they're project-owned. But think twice. Learnings are evidence; selectively deleting them weakens the audit trail.

### Do learnings include PII?

If your `input` contained PII, the learning contains PII. Scrub before submission or apply your usual PII-handling rules to the `learnings` table.

## Security

### Are webhook bodies signed?

Yes. HMAC-SHA256 over the raw body, header `x-webhook-signature`. Always verify with `timingSafeEqual`.

### Can someone submit items to my project without an API key?

No. `/api/public/items` requires `x-api-key` and validates it against the project. Without the key, requests are rejected with 401.

### Where are roles stored?

In a separate `user_roles` table, never on `profiles`. Checked through a security-definer function `has_role()`. This is a strict rule, not a suggestion.

### What does the $HITL gate actually check?

The connected wallet's $HITL token balance against a per-route minimum (`src/lib/hitl/config.ts`). It runs client-side for UX and is re-validated server-side before any payment action.

## Pricing & limits

### Is there a free tier?

Yes — generous enough to integrate and test in production for low-volume use cases. See the [pricing page](https://human-in-the-loop.cc/pricing).

### What counts as billable?

Items submitted, not items decided. Auto-approved items are the same price as queued ones — the routing is the product.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://hitl-01.gitbook.io/hitl-docs/reference/faq.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
