Every agent action counts.
Use Tally online: tally.alx21.chatgpt.site
Sign in with ChatGPT to create your own projects and view telemetry in the hosted service. Follow the hosted integration guide to connect your application.
The hosted dashboard's three native WebMCP read tools were verified in Chrome 154 on October 2, 2026. See the tested browser, results and scope.
This repository contains the TypeScript SDK and the self-hosted edition described below.
Tally is a private, self-hosted monitor for explicitly instrumented WebMCP execution callbacks. Install the TypeScript SDK, execute tools in your own application, then inspect observed outcomes, latency, workflow completion, and release differences in the authenticated dashboard.
This is a software product, not a contest submission. It runs without a paid service or AI API key. The fictional Field Supply storefront is an integration reference with real telemetry ingestion and simulated orders; it is not the only application the SDK supports.
Version 1.0: The supported scope is one owner, up to 20 projects, and reports over at most 50,000 retained events per project. Read the v1 stability and upgrade contract and executed-check report. The local npm scope @tally-local is provisional; no registry package has been published and availability of the name is not claimed. Tally is licensed under the MIT License.
Requirements: Node.js 24 LTS, pnpm 11.19.0, Docker with Compose v2. Ports 3000, 3001 (optional storefront), and 55487 (local PostgreSQL) must be free. These commands work from a checked-out source directory in PowerShell or a POSIX shell.
Download and extract Source code (zip) or Source code (tar.gz) from the v1.0.0 release, then open a terminal in the extracted directory. The tagged source includes the application, migrations, SDK, MIT license, and operations documentation. The release publishes only after the complete verification job passes; a release asset is not a prebuilt application container.
npm install --global pnpm@11.19.0
pnpm install --frozen-lockfile
pnpm run init
docker compose --profile app up --build -dOpen http://localhost:3000 after starting your local installation. Read SETUP_TOKEN from the generated .env locally, enter it in first-owner setup, and choose your own email and password. There are no production default credentials. Keep .env private; it contains the database password, authentication secret, and bootstrap token. pnpm run init never overwrites an existing .env.
Create a project in Setup. Enter the allowed browser origins and exact tool/environment/release/error labels. The browser ingestion identifier is public and grants write-only access; your owner session is required to view reports, export, rotate identifiers, change settings, or delete data.
For local development instead of the application container:
docker compose up -d db
pnpm db:generate
pnpm db:migrate
pnpm --filter @tally-local/sdk build
pnpm devThe initialization command copies local server settings into apps/tally/.env.local. After editing .env, copy it there again for local Next.js operation; Compose reads the root .env directly. Use localhost, matching BETTER_AUTH_URL, when signing in. See operations for HTTPS, backups, restore, upgrades, recovery, and scheduled retention.
Download tally-local-sdk-1.0.0.tgz and its .sha256 file from the v1.0.0 release. Compare the archive's SHA256 against the checksum before installation:
Get-FileHash ./tally-local-sdk-1.0.0.tgz -Algorithm SHA256On Linux use sha256sum, or on macOS use shasum -a 256. You can also build the same distributable format from a checked-out release:
pnpm --filter @tally-local/sdk build
pnpm --filter @tally-local/sdk pack --pack-destination artifactsCopy the downloaded archive, or artifacts/tally-local-sdk-1.0.0.tgz from your source build, to an independent application and run:
npm install ./tally-local-sdk-1.0.0.tgzThe archive contains ESM, CommonJS and TypeScript declarations, with no runtime dependencies or monorepo imports. Use the copyable project-specific example in Setup and the integration guide. SDK version 1.0.0 sends event schema 1; the versions are independent.
pnpm referenceOpen http://localhost:3001 after starting the local reference storefront. In Tally, create a separate project named Reference storefront using the prefilled reference allowlists and origin http://localhost:3001. Copy its public ingestion identifier to the storefront and connect. Run the manual test buttons, ordinary product controls, or native tools where supported. Use v1 + delivery failure, then v2 + the same scenario to observe the corrected release. Use the slow and cancellation scenarios to inspect latency and outcome handling. Saving a simulated order persists it to this browser before recording workflow completion; it does not process a payment.
Manual tests, ordinary application controls and native callbacks have distinct application-reported source labels. Support detection alone is never proof of a native execution. See compatibility.
Use a disposable local installation for the verification scripts. The browser suite creates its own random QA owner credential in ignored work/qa-state.json. It must never run against an installation with a real owner. Complete installation and database migration above first. Generate the Prisma client and build the workspace packages before typechecking a fresh checkout; then run the dashboard and reference application for the browser and integration checks.
pnpm db:generate
pnpm build
pnpm exec tsc --noEmit
pnpm test
pnpm exec playwright install chromium
pnpm test:browser
pnpm test:integration
pnpm test:independent
pnpm test:operations
pnpm exec tsx scripts/native-check.ts
pnpm run licenses
pnpm audit --prodThe operations test restarts this Compose database and creates/removes only the named disposable tally_restore_check and tally_upgrade_check databases. The integration test creates verification projects, manipulates their limit counters, expires verification sessions, and tests the owner login limiter. Do not run these tests on a live installation.
CI sets TALLY_REQUIRE_NATIVE=1 for the native check, so missing browser capabilities fail that job. An ordinary local run records unsupported native APIs as unverified. Native checks exercise the browser's tool discovery and execution APIs, unauthorized project rejection, visible filter changes, persisted outcomes, and removal of tools after sign-out.
- SDK installation and API
- Metric definitions and event reconciliation
- Privacy, ingestion contract and resource limits
- WebMCP compatibility and native verification
- Operation, backup, retention, upgrade and owner recovery
- Executed checks and release readiness
- v1 stability and upgrades
- Implementation checklist and decisions
- Dependency license inventory
- Changelog
