neuron-explorer
Qwen3.5‑4B 전용 조향형 뉴런 탐색기, 모든 MLP 뉴런을 밀어 결과를 보관·탐색
Evals.si(pip install evalsi)는 AI를 배포 전과 실행 중, 학습 중에도 평가합니다
Evals.si (pip install evalsi) evaluates AI before you ship, while it runs and as you train it: agents on sandboxed tasks, RAG pipelines, LLMs and models, with CI gates, live trace scoring and RL rewar
개발 도구Python · GoGitHub @Abhishek-Rnjn온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기A highly scalable and pluggable evaluations repository that works with all environments to provide an unified experience for all your evaluation tasks
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Evaluate AI before you ship, while it runs, and as you train it.
Agents, RAG pipelines, LLMs and models on one set of evaluators: sandboxed runs and CI gates, live trace scoring, and RL rewards for training. Built first for agents. Pluggable, sandboxed and self-hosted, from a laptop to Kubernetes.
Documentation · Quickstart · Guides · Examples · Product roadmap · Technical status
Evals.si evaluates an AI system across its life. Before you ship, it runs agents, RAG pipelines and models on datasets and sandboxed tasks, and fails the build when a gate fails. While it runs, it scores live traces as they arrive and writes the scores back to the MLflow, Phoenix or Langfuse your team already uses. As you train it, the same evaluators become RL rewards and checkpoint checks for fine-tuning. One set of evaluators serves all three, so a metric means the same thing in CI, in production and in training.
Start with the published SDK below. You do not need Evals.si's harness, a server, Docker or Kubernetes to score your application's recorded outputs. The guided setup explains how to progress to live application evaluation and optional agent execution.
The shell example uses Bash. For Windows activation and creating the input file in an editor, follow guided setup.
No clone, no server and no API key. You need Python 3.11+.
python -m venv .venv
. .venv/bin/activate
python -m pip install evalsi
Save these two synthetic examples as cases.jsonl, or use your own approved
records with input, output and reference fields:
{"id":"correct","input":"What is the return window?","output":"30 days","reference":"30 days"}
{"id":"regression","input":"What is the return window?","output":"7 days","reference":"30 days"}
evalsi eval --data cases.jsonl --evaluators exact-match --output results.json
evalsi report results.json -o report.html
Open report.html locally. One answer matches and the other does not; inspect
the regression case to see expected versus actual output. Exact match checks
literal agreement, not general semantic correctness. Choose checks appropriate
to your application before making a release decision.
The scoring command exits 0 when scoring completes, even when a check fails; it is not a release gate. Two synthetic examples are not release evidence. Nothing calls a model unless you explicitly configure one.
Next, replace the sample with a few cases from your application. See guided setup for the application-first workflow, version availability and explicit CI gates. Advanced sandbox/server prerequisites are not prerequisites for this quickstart.
Score two recorded agent runs on their tool calls:
pip install evalsi
cat > agent-runs.jsonl <<'JSONL'
{"id": "refund-ok", "input": "Refund order 42", "output": "Refunded order 42.", "reference": {"tool_calls": [{"name": "lookup_order", "arguments": {"id": 42}}, {"name": "refund", "arguments": {"id": 42}}]}, "trajectory": {"steps": [{"type": "tool", "name": "lookup_order", "input": {"json": {"id": 42}}, "output": {"text": "paid"}}, {"type": "tool", "name": "refund", "input": {"json": {"id": 42}}, "output": {"text": "ok"}}]}}
{"id": "refund-loop", "input": "Refund order 7", "output": "Sorry, I could not do that.", "reference": {"tool_calls": [{"name": "lookup_order", "arguments": {"id": 7}}, {"name": "refund", "arguments": {"id": 7}}]}, "trajectory": {"steps": [{"type": "tool", "name": "lookup_order", "input": {"json": {"id": 7}}, "error": "timeout"}, {"type": "tool", "name": "lookup_order", "input": {"json": {"id": 7}}, "error": "timeout"}, {"type": "tool", "name": "lookup_order", "input": {"json": {"id": 7}}, "error": "timeout"}]}}
JSONL
evalsi eval --data agent-runs.jsonl --evaluators tool-call-accuracy,tool-errors,loop-detection
2 records · 3 evaluators
metric n mean 95% CI skipped errors
tool-call-accuracy.recall 2 0.750 [0.000, 1.000] 0 0
tool-call-accuracy.precision 2 0.667 [0.000, 1.000] 0 0
tool-errors 2 0.500 [0.000, 1.000] 0 0
loop-detection 2 0.500 [0.095, 0.905] 0 0
The first run made both expected calls. The second called lookup_order three times in a row, failed each time and never refunded. The table shows what that does to each metric, and how wide the interval is with two runs.
Check a RAG pipeline's recorded answers, then gate on them:
cat > rag.jsonl <<'JSONL'
{"id": "refund-window", "input": "How long is the refund window?", "output": "Refunds are accepted for 30 days [1].", "context": ["Our policy allows refunds within 30 days of purchase.", "Shipping takes 3-5 business days."], "reference": "30 days"}
{"id": "shipping-time", "input": "How long does shipping take?", "output": "Shipping takes 3-5 business days [4].", "context": ["Our policy allows refunds within 30 days of purchase.", "Shipping takes 3-5 business days."], "reference": "3-5 business days"}
JSONL
evalsi eval --data rag.jsonl --evaluators citation-accuracy
2 records · 1 evaluator
metric n mean 95% CI skipped errors
citation-accuracy 2 0.500 [0.095, 0.905] 0 0
The second answer cites passage [4], but only two passages were retrieved. Add a judge and the faithfulness, answer-relevance, context-precision and context-recall metrics tell you whether retrieval or generation is at fault (guide).
For the setup commands (0.3.2) and maintained GitHub Action, see guided setup. For dataset version review and digest-pinned runs, see dataset snapshots. Validate the evaluator itself with judge calibration: freeze human labels, select prompts/models/thresholds on tuning cases, then measure held-out validity and fresh-call repeatability. Try the offline example. Turn production incidents into reviewed regression cases with the failure inbox, then share approved immutable dataset versions and pin them in server runs. Compare a candidate with a reviewed baseline using enforced release decisions, or configure and investigate the check in the browser release workbench. Start an agent suite from the support and refund starter: synthetic tasks graded on the final state of a simulated shop.
Next: gate an agent in CI (free and offline, with a failing gate and a GitHub Actions workflow), evaluate a RAG pipeline, run an agent on sandboxed tasks, score live traces, train with evaluators as rewards, or score plain model outputs. The docs are at evalsi.dev.
First time? The tutorials walk through installing Evals.si and its agent harness and driving a fake tool-calling model through every feature, offline, with the rough edges a first install hit in an onboarding study.
Agents come first, because that is where evaluation is hardest. RAG and training are first-class too, and the evaluators are shared, so what you learn on one carries to the others.
Evals.si ships its own agent harness (record and replay, sub-agents, fault injection, versioned profiles). Put the built-in agent, or your own over A2A, MCP, HTTP, an OpenAI Responses API or a CLI, to work on sandboxed tasks, including SWE-bench, τ-bench, Terminal-Bench and BFCL. A hidden checker grades the end state, and evaluators score tool calls, trajectories, loops, step budgets, policy violations and the diff. Trials give pass@k and pass^k, and gates fail the build when an agent gets worse. In production, score traces from LangGraph, CrewAI, the OpenAI Agents SDK, LlamaIndex and the Claude Agent SDK. Gate an agent in CI · Evaluate a RAG pipeline · Agent runs · Agent frameworks · Multi-service tasks · Harness² runs
Retrieval and generation fail differently, so they are scored separately: context-precision and context-recall for retrieval, faithfulness and answer-relevance for generation, and citation-accuracy, which needs no judge. Use the built-in metrics, or RAGAS and DeepEval's, through a judge you choose, including a model you host. Gate a pipeline in CI on its recorded answers, and read every mean with its confidence interval.
Evaluate a RAG pipeline · DeepEval and JevEval · Example
Evaluators become RL rewards for TRL, verl and OpenRLHF: format checks, math equivalence, sandboxed code tests and served reward models, composed by a RewardSpec into one reward per rollout with a breakdown per component. Every saved checkpoint is evaluated against your run specs, compared with the base model record by record, and regression gates fail on significant drops.
Fine-tuning and RL · Example
Evals.si does not replace metric libraries and benchmarks. It runs them, and adds what they leave to you: running targets, gating, live scoring and isolation.
| You want | Use |
|---|---|
| A library of metrics inside your own test suite | DeepEval or RAGAS (both also run here as adapters) |
| Standard benchmarks and harnesses | lm-evaluation-harness or Inspect AI (both also run here as adapters) |
| An agent run on sandboxed tasks, graded on the end state, with pass/fail gates for CI and deploys | Evals.si |
| RAG metrics split into retrieval and generation, as a gate in CI | Evals.si |
| Scores on live traffic, written back to your trace store (MLflow, Phoenix, Langfuse) | Evals.si |
| RL rewards and checkpoint regression checks from the same evaluators | Evals.si |
| Untrusted evaluator or agent code in a sandbox, self-hosted or air-gapped | Evals.si |
If you only need a handful of metrics in a pytest file, a metric library alone is simpler. Evals.si is for when evaluations become a pipeline.
Each release publishes (see the Kubernetes guide to verify the signatures):
pip install evalsi (SDK and CLI) and pip install evalsi-harness (the agent harness) from PyPI; the same wheels and sdists are attached to the release. Since v0.2.0, releases also publish Linux (amd64, arm64) platform wheels that carry evalsid and its sandbox's bwrap, so evalsi serve and code evaluators need nothing else; v0.1.0 and other platforms get the pure-Python wheel and a separate evalsid.ghcr.io/abhishek-rnjn/evalsi and the three Helm charts as OCI artifacts, oci://ghcr.io/abhishek-rnjn/charts/evalsi, evalsi-crds and evalsi-sandboxd.To contribute from source, use the development setup below. It is not required for the installed SDK quickstart.
You need uv (it installs Python 3.11+ for you). Running the server also needs Go 1.26+. On Linux, the sandbox for code evaluators needs bubblewrap (see Development).
git clone https://github.com/Abhishek-Rnjn/Evals.si && cd Evals.si
cd python && uv sync --all-packages
uv run evalsi eval --data ../examples/quickstart/qa.jsonl --evaluators exact-match,numeric-match,latency
6 records · 3 evaluators
metric n mean 95% CI skipped errors
exact-match 6 0.333 [0.097, 0.700] 0 0
numeric-match 3 0.667 [0.208, 0.939] 3 0
latency 6 517.500 [276.409, 758.591] 0 0
Records that lack what an evaluator needs (here, a numeric reference) are skipped, never scored as zero. Failures in the evaluator or judge are reported as errors and excluded from the metrics. Use --cluster-by <metadata key> when records are correlated.
There is no default judge. Configure one explicitly:
# Any OpenAI-compatible server: vLLM, Ollama, LiteLLM, an AI gateway, OpenAI itself
uv run evalsi eval --data ../examples/quickstart/qa.jsonl --evaluators exact-match,llm-judge \
--judge-model my-judge --judge-base-url http://localhost:8000/v1
# Claude, through the official SDK (installed by the `anthropic` extra)
uv run evalsi eval --data ../examples/quickstart/qa.jsonl --evaluators llm-judge \
--judge-provider anthropic --judge-model claude-opus-5-5 --param llm-judge.rubric=helpfulness
Judge responses are cached by content hash, so re-running an unchanged evaluation costs nothing. Pass --no-cache to force fresh calls.
A judge served on vLLM, SGLang or Ollama can also give its decisions as probabilities read off its token logprobs, rather than as text. JevEval's questions use this with decisions: logprobs; see the DeepEval and JevEval guide.
import evalsi
from evalsi import Record, Score, evaluator
@evaluator(name="acme/polite", version="1.0.0")
def polite(record: Record) -> Score:
return Score(passed="please" in record.output.as_text().lower())
result = evalsi.evaluate("qa.jsonl", ["exact-match", polite])
print(result.table())
result.save("results.json") # manifest, summaries and every per-record result
evalsi catalog lists every installed evaluator and its params.
evalsid serves the same evaluators over gRPC, gRPC-Web, HTTP/JSON and REST on one port, and runs the Python evaluators in a supervised worker.
go build -o bin/evalsid ./cmd/evalsid # from the repository root
cd python && uv sync --all-packages
EVALSID=../bin/evalsid uv run evalsi serve --config ../examples/server/evalsi.yaml
from evalsi.client import Client
with Client("http://localhost:8080") as client: # API key from EVALSI_API_KEY
print(client.evaluate("qa.jsonl", ["exact-match"]).table())
Client.evaluate() returns the same result as in-process evalsi.evaluate(), intervals included; evaluate_async() and evaluate_stream() (with evalsi[grpc]) don't block. REST lives under /v1alpha1 (POST /v1alpha1/evaluate, POST /v1alpha1/runs, GET /v1alpha1/traces/{trace_id}, GET /v1alpha1/scores for online scores per trace and label, …; the full list is in internal/server/rest.go), and gRPC reflection is on.
A run spec that names a dataset file (dataset: {path: tasks.jsonl}) needs datasets_dir in the config: the server reads dataset files only under that directory, and refuses paths without it. examples/tinylm/server.yaml is a four-line config that has it. evalsi serve -- -h lists the server's flags.
On loopback with no auth section the server runs without authentication; on any other address it requires it unless you pass --no-auth. The example's judge is Claude: export ANTHROPIC_API_KEY first, or llm-judge reports errors (never zeros). To try API keys, roles and the audit log locally, use examples/auth/local.yaml and the identity guide.
A run spec generates outputs from a target, scores them and checks gates. The same file runs embedded, on a server, or as a Kubernetes EvalRun:
uv run evalsi run -f ../examples/runs/capitals.yaml # embedded
uv run evalsi run -f ../examples/runs/capitals.yaml --server http://localhost:8080
uv run evalsi compare --server http://localhost:8080 <baseline-run> <candidate-run>
trials: 3 adds pass@3 and pass^3, gates fail the command with exit code 3 (so CI fails), and budgets cap tokens. Server runs are durable: a run interrupted by a restart resumes without redoing finished work. A project can subscribe to signed webhooks for finished runs, failed gates, scored traces and alerts. See examples/ci for a pull-request gate.
Each task gets its own environment: an OCI image, files, setup and a sandbox policy. The agent works in it, a checker grades the end state, and evaluators score the trajectory and the diff.
uv run evalsi run -f ../examples/agents/swebench-verified.yaml --server http://localhost:8080
uv run evalsi promote <run> --dataset regressions --when 'scores["task-success"] < 1' --server http://localhost:8080
swebench://, taubench://, harbor://, terminal-bench:// and bfcl:// datasets are graded by each benchmark's own code. The harness adds MCP tools, mocks and fault injection, a simulated user, and record and replay. See the agent runs guide.
Send traces to the server's OTLP endpoint, or read them from where they already are, then apply a policy: a CEL selector, deterministic sampling, cascades (the judge runs only after cheap checks pass), windowed alerts, and promotion of bad traces into datasets.
uv run evalsi policy apply -f ../examples/watch/support-policy.yaml --server http://localhost:8080
uv run evalsi source apply -f ../examples/sources/studio-mlflow.yaml --server http://localhost:8080
| Framework | Tested instrumentations |
|---|---|
| LangGraph / LangChain | OpenInference, LangSmith's OTel export, MLflow autolog |
| CrewAI | MLflow autolog, OpenInference, OpenLLMetry |
| OpenAI Agents SDK | OpenInference, OpenLLMetry |
| LlamaIndex | OpenInference |
| Claude Agent SDK | OpenInference, Claude Code's own traces |
Each row is a real run of the framework, checked in and tested; the agent frameworks guide has the setup and what each instrumentation records. Trace sources read MLflow, Phoenix, Langfuse, LangSmith or Collector ClickHouse tables (history included), score the traces, and write back assessments, annotations, feedback or companion score rows. The ClickHouse source supports the Collector Map schema and latest-score queries with FINAL; it passed bounded live checks on ClickHouse 25.8.33.6. Self-hosted Langfuse 4.56.0 passed the recorded two-stage check; Databricks numeric-experiment bearer-token downloads are built and contract-tested, not live-verified. LangSmith has server/worker fixture coverage and an opt-in live check; live verification still needs credentials. To add Evals.si to an agent platform, follow the integration guide and the reference demos, which evaluate Deep Agents and DeepSeek Harness agents end to end.
| Pack | Evaluators |
|---|---|
core | exact, contains, fuzzy, numeric and regex match; JSON validity and schema; length; latency; token usage; cost |
judge | llm-judge with rubrics |
text | BLEU, corpus BLEU, ROUGE-1/2/L, chrF, token F1 |
rag | faithfulness, answer relevance, context precision and recall, citation accuracy |
safety | PII, secret and canary leaks; refusal; harmlessness |
agent | tool-call accuracy, trajectory match, tool errors, loop detection, step budget, goal completion; task success (pass@k, pass^k), code quality, policy violations, efficiency |
code | unit tests run in the sandbox, Python syntax |
rl | verifiers for RL rewards: format, math answers, sandboxed code tests, overlong penalty, reward models |
finetune | diversity, calibration, contamination, reward hacking |
ml-classic | classification, regression and ranking metrics |
ml-monitoring | drift (PSI, KS, Jensen-Shannon), data quality, group fairness |
DeepEval, RAGAS, Inspect AI and lm-evaluation-harness, and the SWE-bench, τ-bench and BFCL benchmarks, live in python/adapters, each in its own pinned environment. The DeepEval guide covers its 30 metrics for RAG, agent traces, safety and conversations. It also covers G-Eval and JevEval, metrics you define as criteria or as weighted questions, whose decisions can come from a model you host. Community evaluators can be Wasm modules with no filesystem, network or clock, installed from a plugin index.
kubectl create namespace evalsi
helm install evalsi-crds deploy/helm/evalsi-crds --set operator.namespace=evalsi
helm install evalsi deploy/helm/evalsi -n evalsi
kubectl apply -n evalsi -f examples/runs/capitals.yaml
kubectl get evalruns -n evalsi # PHASE, RUN, DONE, TOTAL
An operator with EvalRun, OnlineEvalPolicy, TraceSource, Evaluator and SandboxClass resources, validated on admission. Also included:
See the Kubernetes guide.
| Identity and access | OIDC (Keycloak, Entra ID, Okta, …), API keys, GitHub Actions OIDC, client certificates; project RBAC with custom roles, CEL rules and an audit log |
| Inline guardrails | Redact, evaluate and block LLM and MCP traffic in flight through agentgateway, with an audit mode |
| Trace redaction | Mask credential keys on push and pull before storage and evaluation; configurable key globs, regexes and opt-in PII classes |
| MCP for coding agents | evalsi mcp lets an agent run a suite before and after its change and see what regressed |
| Human annotation | Queues with rubrics, annotator agreement, and judge calibration against human labels |
| Evaluator validation | Frozen human labels, tuning/held-out judge comparisons, false positives/negatives, repeatability and portable reports |
| Fine-tuning and RL | Evaluators as rewards for TRL, verl and OpenRLHF; every checkpoint checked against the base model |
| Web UI | Runs, comparisons, policies, annotation queues, guardrails and the catalog, read through the API |
| Reports and analytics | evalsi report (HTML or Markdown), evalsi analyze (DuckDB over runs), sinks to MLflow, OpenTelemetry, Langfuse and Phoenix, a Grafana dashboard |
flowchart LR
subgraph in [Inputs]
CLI[CLI and Python SDK]
CI[CI pipelines and MCP clients]
OTLP[OpenTelemetry traces]
Stores[MLflow · Phoenix · Langfuse]
GW[agentgateway]
end
subgraph core [evalsid]
API[gRPC · HTTP · REST · MCP]
Runs[Runs and gates]
Watch[Ingest and online policies]
Guard[Guardrails]
end
Worker[Python evaluator workers]
Sandbox[Sandbox ladder: Firecracker · bubblewrap · Landlock · pods]
Storage[(SQLite or PostgreSQL · ClickHouse · S3)]
Sinks[Sinks and write-back]
CLI --> API
CI --> API
OTLP --> Watch
Stores --> Watch
GW --> Guard
API --> Runs
Runs --> Worker
Watch --> Worker
Guard --> Worker
Worker --> Sandbox
core --> Storage
core --> Sinks
The Go server owns the API, runs, ingest, policies, auth and storage; evaluators run in Python workers (decision 0002). The protobuf API in proto/ is the single source of truth for gRPC, REST and the CRDs. Read the architecture and implementation plan and the decision records for the why.
Evals.si is pre-1.0 (the latest release is 0.3.2). The API is v1alpha1 and can change between minor versions; see the changelog and SUPPORT.md for what that means.
What is verified, in short:
GRPOTrainer trains with Evals.si rewards on CPU in CI; the rewards also run inside verl's and OpenRLHF's own reward code (no training step there).--platform linux/arm64 for arm64); see the Kubernetes guide.What is deferred or not yet verified is listed in LEFTOVERS, sorted by what each item needs next. Maintainers: see the release gates and publication procedure.
The proposed product roadmap tracks future work for production-agent and enterprise AI teams, with priorities, dependencies and acceptance criteria. The product strategy records the competitive research and adoption plan.
The pre-0.4 release plan lists the open product-readiness work for stable 0.4 and the customer-validation criteria that come after it.
Runtime verification tracks real KVM and other remaining prerequisites. The competitor benchmark results compare deterministic local evaluation overhead, with separate limits for hosted platforms.
| Start here | Guides | Reference |
|---|---|---|
| Documentation site · Tutorials | Gate an agent in CI · Agent runs · Agent frameworks · Trace sources | Architecture |
| End-to-end guide | Kubernetes · agentgateway on Kubernetes · Identity | Decision records |
| Examples | Guardrails · MCP · · · |
| Path | What |
|---|---|
proto/ | Protobuf API, the single source of truth (evalsi.v1alpha1, evalsi.plugin.v1alpha1) |
gen/go/ | Generated Go code (do not edit; run make proto) |
cmd/evalsid/, internal/ | The Go server: API and REST routes, auth, runs, rewards, OTLP ingest and framework profiles, online policies, trace sources, sandbox, sinks, statistics |
python/evalsi/ | Python SDK, CLI, embedded runner, evaluator worker, built-in packs, rewards (evalsi.rewards) and checkpoint evaluation (evalsi.training) |
python/evalsi-harness/ | The agent harness: tool loop, agent connectors, environments and checkers, RL environments, Harbor and Terminal-Bench importers |
python/adapters/ | Framework and benchmark adapters, each in its own environment |
cmd/evalsi-guest/ | The init and agent inside Firecracker microVMs, and the agent in sandbox pods |
cmd/evalsi-operator/, operator/ | The Kubernetes operator: CRD types, controllers, admission webhooks |
deploy/ | Helm charts (evalsi, evalsi-crds, evalsi-sandboxd), the air-gapped bundle, the kind e2e |
tests/ | End-to-end and load tests (e2e), chart tests (helm), trainer tests (trainers), checkpoint-hook tests (training_hooks), a browser test of the web UI (ui), framework trace recorders (frameworks) |
examples/ | Runnable examples and the reference demos |
docs/ | Design, decision records, requirements, guides and the verification report |
website/ | The documentation site |
You need Go (1.26+), buf and uv.
make tools # protobuf plugins, at the versions CI uses
make proto # lint, format and regenerate code after editing proto/
make check # everything CI runs: gofmt, go vet/test, buf lint/format, ruff, mypy, pytest
make e2e # evalsid against a real Python worker; EVALSI_E2E_IMAGES=1 adds tests that pull images
make adapters-check # each framework adapter's contract tests, in its own environment
make operator-gen # regenerate the CRDs and deepcopy code after editing operator/api
For the Kubernetes pieces:
setup-envtest and set KUBEBUILDER_ASSETS; without it, those tests skip.tests/helm) need helm on the PATH; without it, they skip.EVALSI_TEST_POSTGRES_DSN to run internal/store against a real database, as CI does. Locking and concurrency fixes are only proved there.tests/ui) runs the real evalsid in Chromium: cd tests/ui && npm ci && npx playwright-core install chromium, then EVALSI_UI_WORKER="$PWD/../../python/.venv/bin/python -m evalsi" npm test. CI runs it as the ui-browser job.deploy/e2e/kind-e2e.sh) needs Docker, kind, kubectl and helm. It builds the image, makes an air-gapped bundle and installs from it, as the CI kubernetes job does.EVALSI_LOAD=1 go test -run TestLoad -timeout 30m ./tests/e2e/. EVALSI_LOAD_SPANS and EVALSI_LOAD_RUN_RECORDS set its sizes, and EVALSI_LOAD_CLICKHOUSE_URL runs the trace half against ClickHouse.The sandbox tests need bubblewrap and unprivileged user namespaces. On Ubuntu 24.04, also run sudo sysctl kernel.apparmor_restrict_unprivileged_userns=0.
Controlled robustness checks include seeded prompt-injection tool faults, private completion canaries (evalsi canary create), and observed trial score diagnostics (evalsi determinism). Their scope and follow-ups are recorded in the implementation review.
Issues and pull requests are welcome. CONTRIBUTING.md says where things live, what to run before you push and the conventions to follow. Please read the Code of Conduct. Report security problems privately: see SECURITY.md. SUPPORT.md covers getting help, stability and what has been verified. Changes are listed in the CHANGELOG.
| Product requirements |
| Integrate an agent harness | Annotation · Fine-tuning and RL · Web UI | Roadmap and leftovers |