Harper Reflex
Sign in with your Google account to manage Reflex.
Sign in with GoogleThis account is not an authorized admin, so admin APIs are unavailable.
Set up Harper Reflex
Point this deployment at your content and the model that answers from it.
What should this engine do?
Pick the role this deployment should answer in — you can refine it later.
How this works
A deployment answers in one role, which sets its starting instructions and behavior. The optional details below tailor those instructions. Nothing is committed until your first index starts, and you can edit everything afterwards on the Prompt screen.
Add your first source
Point this deployment at the content it should answer from.
How this works
Pick a type, name it, and fill in where the content lives — a site to crawl, a Harper table, or files you upload. Upload sources take their file once the source exists. You can add more sources later.
Add a provider
Pick the type, paste the key, name the model — Reflex does the rest.
How this works
Reflex stores the account, registers the model, checks it can actually answer, and points this deployment's answering at it. Your key is encrypted at rest and used only server-side at call time; it is never sent back to the browser.
Advanced
Advanced — connections, model targets, and role binding
A connection is the endpoint/account and its API key, configured once and shared by everything it serves. A model target is one model reached through that connection, probed on its own. An execution role says which target does which job.
The deployment default is supplied through Harper's model API. Hosted APIs and custom HTTP endpoints are external connections.
Generation model target
Run the first index
Indexing ingests your source and stamps the knowledge base so it can be queried. Once it has started, the profile is created from the persona you selected and you can continue setup — indexing keeps running in the background, and its progress and result appear on the Sources screen.
Profile created
Ask your first question
This runs the real answer pipeline (the same one POST /answer uses) through the profile you
just created. It works once indexing has produced content — if the first index is still running in the
background, finish setup now and come back to ask later from the Playground.
No citations.
Setup complete
Indexing may still be running in the background — the Dashboard and Sources screens show its live progress. Tune prompts and run queries in the Playground, or add and reindex sources on Sources.
Sources
One knowledge base, several feeds into it — and how current each feed is.
How this works
Sources feed one shared knowledge base — uploaded files, crawled sites, and Harper tables. Every question searches all indexed sources together, so a source has no separate scope of its own. Disabling a source stops new ingestion and scheduled refreshes but keeps what it already indexed, so you can turn it back on at any time.
No sources exist yet. Add one with the button above, then upload files or run a reindex to populate the knowledge base.
Providers
The models this deployment can call, and the accounts it calls them through.
How this works
Adding a provider is one action: pick the type, paste the key, name the model. Keys are encrypted at rest and used only server-side at call time, so editing never shows the current key. Leave the key field blank to keep the existing key, or enter a new value to rotate it.
What is serving
The two models this deployment answers with, and whether each one is working.
Providers
| Account | Service | Where it runs | Credential | Models | Actions |
|---|
No accounts yet. Add one with the button above, then name the model it should call.
Advanced — models and editing
Model targets
One model reached through one account, for one capability, probed on its own. This is what a role binds to.
| Target | Account | Capability | Model | Probe | Actions |
|---|
No model targets exist yet. Add a provider above, or create an account here and add a target under it.
Playground
Ask a question and see exactly how it was answered.
How this works
Answer mode runs the live deployment end to end — the active prompt version and cache policy apply, so cache hits and misses show up here exactly as callers experience them. Profile retrieval searches what this deployment's prompt is scoped to; corpus diagnostic searches the whole knowledge base directly, which is what you want when tuning retrieval.
Try one of these:
Answer
Citations
No citations.
Cache decision
Retrieval
| Source | Score | Used |
|---|
Nothing matched this question.
This run
Path
Identifiers
Results
Trace
Prompt
Instructions and behavior for this deployment.
How this works
Saving creates the next version and starts serving it only once the save succeeds, so a failed save never leaves this deployment half-changed. Every earlier version stays below, and restoring one brings its whole snapshot back at once — instructions, behavior, citation style and cache settings together. If another admin activates a version while you are editing, your save is rejected rather than silently overwriting theirs. The controls below are a view over the version as it is stored: they change only what you touch, and anything they do not show is kept exactly as it is and editable under “Edit as JSON”. Once you have saved, “Test in playground” takes you to the one place a question gets asked.
This deployment has no profile yet. Run the Setup wizard to create it, then come back to edit its prompt.
Version history
| Version | Created | By | Evals | Actions |
|---|
Access
API keys and endpoints for calling this deployment from your own applications.
How this works
Secret keys authenticate server-to-server calls to POST /answer,
POST /retrieve, POST /query, and MCP, passed in the x-api-key header.
A key's raw value is shown exactly once when you create it and can never be retrieved again — if you lose
it, revoke the key and create another.
Endpoints
Never embed a secret key in a web page. The examples use a placeholder — substitute your key server-side only.
Keys
No keys yet
A key is what lets your own code call the endpoints above. Create one, scope it to the surfaces it needs, and copy its value while it is on screen.
| Name | Kind | Surfaces | 7d calls | Revoke |
|---|
Provider keys entered on the Providers screen are encrypted where they are stored and are never sent back to this browser.
Advanced tuning
Defaults are tuned — changes here can require a full reindex, and answers pause while it runs.
How this works
This screen sets the embedding model, chunking, retrieval cutoff and weights, semantic-cache gates, and source volatility. Changing chunking on an indexed knowledge base requires an explicit reindex acknowledgement before anything persists. Changing the embedding model additionally clears the embedding fingerprint, so retrieval fails closed — every question is refused rather than answered from vectors in the wrong space — until a full reindex re-stamps it. A blank number field keeps its current value, and its placeholder shows the value in effect. A slider always sits somewhere, so the line under it says whether that value is set here or is the default; leaving it where it is saves nothing.
Dashboard
Query volume, cache performance, spend and content gaps.
How this works
Everything on this screen is pre-aggregated: the browser never reads individual questions, answers or traces. Spend and savings are estimates based on the pricing configured for each model, so treat them as a guide to relative cost rather than as a bill.
Readiness
All readiness checks
No questions have been asked in this window yet, which is normal for a new deployment.
More metrics
Where the questions went
What happened
Details
Every answer records the decision it made at each stage. These counts are the stage keys exactly as they appear in an answer's trace, so they can be matched against one.
Cost funnel stages
| Stage · decision · reason | Count |
|---|
No funnel stages were recorded in this window.
Cache stages
| Stage · decision · reason | Count |
|---|
No cache stages were recorded in this window.
Health policies applied
Top queries
| Normalized query | Count |
|---|
No queries were tracked in this window.
Content gaps
Questions this deployment could not answer because nothing in the knowledge base covered them. Recurring entries are the strongest signal for which sources to add or expand.
| Normalized query | Count |
|---|
No content gaps in this window — no questions were refused for lack of retrievable content.
Per-key usage
Query volume and estimated spend for each key you issued on the Access screen. Traffic from the admin UI groups under "(no access key)".
| Access key | Queries | Est. spend |
|---|
No per-key usage was tracked in this window.
History
| Bucket (UTC) | Surface | Queries | Hit rate | Refusals | p95 | Est. spend |
|---|