AI Decision System
Replayable, offline-verifiable records for AI-assisted go/no-go decisions: experiment promotions, typed model answers and human-approved actions.
프로젝트별 AI 출력과 소모 토큰을 비교해 효과·모델 적합도·컨텍스트 건강·채택률을 측정 완전 오프라인·업로드 없음
Weighs AI output against the tokens it burns, per project: effectiveness, model fit, context health, adoption. Fully offline, no upload. The first piece of a self-hosted AI-engineering analytics platf
개발 도구Go · HTMLGitHub @assaio온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
Is your AI coding spend delivering? Offline-first analytics for Claude Code, Codex CLI, Gemini CLI, GitHub Copilot CLI and Cline — $/100 AI lines per project, every verdict carrying its own confidence, a self-contained dashboard, exec plugins in any language, and a self-hosted team server. No telemetry; prompts are never read.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Vendor-neutral evidence for AI-assisted software engineering.
Measure cost, usage and code-producing activity from local coding-agent logs today;
connect that evidence to review, CI and durable outcomes next. Offline-first, reproducible
and designed to measure systems rather than rank people.
AI coding vendors now provide useful usage dashboards of their own. They are the right
place for plan limits and vendor-specific administration. assaio is for the questions
that cross those boundaries:README 전문 보기 ↗See how AI coding tools are used, compare estimated costs and inspect local delivery evidence.
assaio is an open-source, offline-first Go CLI (assaio-agent) with embedded SQLite for Claude
Code, Codex CLI, Gemini CLI, GitHub Copilot CLI, Cline and Antigravity CLI. Platform and engineering
teams can inspect observed usage breadth, API-equivalent cost estimates and bounded local PR,
review and CI observations. Antigravity contributes activity only, excluded from token and cost
figures. assaio collects no prompts, responses or code and never ranks people. Optional self-hosted
team mode pools usage; delivery evidence remains on the invoking clone.
assaio website · Roadmap · Shipped features · Documentation · Privacy model
Use vendor dashboards for plan limits and vendor administration. assaio gives a local view across
vendors for these questions:
Adoption describes observed sessions, active days and tool/project breadth, not the percentage of
all employees using AI. The local evidence command reports session→commit candidates with
confidence, ambiguity, abstention and population coverage. Optional --github adds bounded PR,
review snapshots, raw review dismissals, latest-head checks and historical suite/run observations
through your own gh. Dismissals retain actual event times, nullable review joins and separate
source coverage; they leave current snapshots and matching unchanged. These are facts about PRs,
not proof of AI productivity or session outcomes. See the source study. Exact review rounds, comparable
PR pipeline CI rates, authoritative squash-versus-rebase methods and PR revert relations remain
outside the shipped scope. See the roadmap.
assaio is for platform teams, engineering-enablement groups and individual developers that:
assaio is not a fit for live quota bars, prompt replay, a general LLM observability backend or a
production-ready multi-tenant service. Use vendor tools for quota data. assaio does not extract or
store prompt or response bodies. The team server is an MVP.
assaio-agent is one Go binary with embedded SQLite. Prebuilt releases support macOS, Linux and
Windows on amd64 and arm64.
Homebrew:
brew install assaio/tap/assaio-agent
With Go 1.26 or newer:
go install github.com/assaio/assaio/cmd/assaio-agent@latest
Or download an archive from GitHub Releases. Releases include checksums, an SPDX SBOM and build-provenance attestations. See RELEASING.md to verify them.
Preview assaio without reading your logs:
$ assaio-agent demo
Then run the guided import:
$ assaio-agent init
init shows which local logs it will read and which configured parser plugins it will run, imports
their history and writes the first report. assaio itself sends nothing over the network; a parser
plugin from your config is your own program (see PRIVACY.md).
The usual loop is short:
$ assaio-agent dashboard --since 30d --output assay.html
$ assaio-agent evidence --repo . --since 30d
$ assaio-agent evidence --repo . --since 30d --github
$ assaio-agent digest --weekly --dry-run
$ assaio-agent doctor --strict
dashboard creates a self-contained offline HTML report.evidence compares local sessions with local commit observations without storing an edge;
optional --github uses your own gh to read bounded PR, review, latest-head check and separate
historical suite/run observations. Only PRs named by candidates or alternatives get details.digest reports what changed since the previous run and whether the comparison is sound.doctor reports source coverage, format drift, store health and unpriced usage.For automation or a narrower question, use report, effectiveness, analyze, recommend,
reprice, reconcile, check and signals. The generated command
reference is authoritative; the README omits the full flag list.
| Layer | Available now | Claim |
|---|---|---|
| Activity / adoption | observed sessions, active days, tool/project breadth, turns and model mix | usage was observed in the available logs |
| Output | accepted edits, AI line activity, rework and rejection where recorded | an artifact was produced |
| Local delivery evidence | session→commit candidates; optional bounded PR, review and CI observations | a candidate relation or PR state was observed, without causal attribution |
| Outcome | directional local survival check | recent commit changes remain in HEAD, without assigning lines to AI sessions |
| Impact | not shipped | no causal delivery, quality or business result is established |
Every metric includes source coverage, sample size, freshness and parser version. If a source lacks
a field, assaio excludes it from the denominator rather than counting it as zero. For an exec
parser plugin, omitted token counters are still stored as 0 (B212). A missing model price appears
as —/null, not $0.
Run:
$ assaio-agent signals coverage
to see what your data supports. FEATURES.md lists shipped features; docs/corrections.md records published figures later found to be wrong.
evidence observes attribution; it is not an outcome metric. It joins a repository's commits
only with sessions whose rows resolved to that repository, uses bounded time proximity, labels
results matched, ambiguous or unmatched, and shows competing commits. A match does not
show that the session caused the commit. With --github, independent bounded repository reads
add PR and review snapshots, latest-head checks and historical suites/runs on currently listed
commits. Details appear only for PRs named by candidates or alternatives. Counts expose missing
and truncated layers; null means unavailable, while an explicit empty connection means known
empty. Reviewed-revision counts require complete usable review populations. A request-change snapshot
share uses the entire named merged PR population, including alternatives, as its denominator
and is withheld unless every PR has a nonempty complete usable review population. Exact rounds and comparable PR pipeline CI rates are withheld. Merge topology
can prove a multi-parent merge, but one parent cannot distinguish squash from rebase. Observations
stay local and in memory for one command; offline evidence stays unchanged. See
how to read the result.
assaio reads existing local logs from these tools:
| Source | Tokens/cost | Activity | Important limit |
|---|---|---|---|
| Claude Code | yes | yes | local transcripts follow the tool's retention policy |
| Codex CLI | yes | yes | local rollout history is not the account-wide /usage history |
| Gemini CLI | yes | limited | calibration still needs an external real capture |
| GitHub Copilot CLI | yes | limited | records are session-grained after completion |
| Cline | yes | limited | calibration still needs an external real capture |
Antigravity CLI (agy) | no | yes | its format publishes neither tokens nor working directory |
The source-depth matrix lists each field and its
source. Vendor log formats can change. Tests, calibration checks and doctor show format drift but
cannot prevent it.
Costs are API-equivalent estimates from a vendored LiteLLM price snapshot, not vendor invoices or
reconstructed subscription quota use. Since v0.29.0, when LiteLLM stops listing a model, assaio
keeps the last price LiteLLM published for it; the vendor may no longer offer that rate, and
doctor counts such models. reconcile compares a downloaded export with the local estimate and
shows any unexplained remainder.
On its normal offline analysis path, assaio:
evidence --github asks GitHub for pull
requests through your own gh only when you run it;evidence or survival runs,
and stores none of them;Project, Subpath and session ID to the server;Line activity comes from counts and diff markers; code on those lines is not stored. See PRIVACY.md for the exact fields, retention and deletion commands.
serve and sync can pool usage on infrastructure you operate. Sync v2 sends a keyed member
digest and usage records to the team server; project, subpath and session ID also reach it. Each
writer needs a distinct bearer token. Existing central stores require an offline migration and
backup; see the team-server guide. Team mode is a tested MVP, not
a production-ready service.
It has authentication, request bounds and an aggregated usage dashboard for observed adoption and estimated costs. PR/review/CI evidence is absent from sync and the server. It still needs RBAC, token rotation, resumable sync, retention controls, a backup/restore drill and a measured operating envelope. The roadmap lists these gates.
Executables in any language can add a parser, metric or check rule. Each protocol has a handshake,
a versioned JSON contract and boundary validation. Parser and metric plugins have a verify
command; a rule plugin is checked by running check. The core does not import plugin internals.
Start with docs/extending.md. The binary can also export the full machine-readable reference:
$ assaio-agent docs export
The in-process Go packages stay under internal/ until the public contracts freeze.
The local CLI is suitable for evaluation and design-partner pilots. At the v0.26 audit, the project had an 86% statement-coverage snapshot. It has cross-platform CI, race tests, native parser fuzzers, vulnerability scanning and a published correction record.
It remains pre-1.0 because:
The roadmap sets the evidence needed for v1.0. BACKLOG.md lists candidate work, not a schedule.
For a design partnership, pilot or consulting on measuring AI-assisted engineering, email [email protected] or use the contact form.
Read CONTRIBUTING.md before opening a PR. Each change needs one Conventional
Commit, DCO sign-off, and passing make fmt, make lint and make test. Parser changes must also
pass make fuzz.
Report vulnerabilities privately through GitHub Security Advisories, not a public issue. See SECURITY.md.
Apache-2.0; see LICENSE. The embedded LiteLLM pricing snapshot is MIT-licensed; see NOTICE for attribution.