CLI-first verification workflow platform for grounded AI-assisted hardware validation
Project description
Telchines
CLI-first verification workflows for hardware teams that want grounded, replayable AI instead of generic repo chat.
Quick Start | v1 Workflows | How It Works | Documentation
Why Telchines
Generic coding assistants are weak at verification work because the real loop is not just text generation. It is specs, RTL, logs, tool feedback, coverage holes, prior runs, and the ability to replay what happened.
Telchines is built around that loop:
- retrieve evidence from RTL, docs, logs, and run history
- run verification-native workflows instead of generic chat prompts
- preserve replay artifacts and citations
- validate outputs through adapters and deterministic gates
- keep model routing local-first and policy-aware
Telchines is not trying to replace simulators or formal tools. It is the orchestration layer that helps engineers move from signal to next action faster.
What You Can Do With v1
| Workflow | What it does | Primary command |
|---|---|---|
| Retrieval | Builds task-aware evidence packs from repo and run history | tel retrieve "query" |
| Agent | Plans and runs review-gated hardware tasks with evidence replay | tel agent "fix..." --tool ... --file ... |
| Repair | Proposes and validates minimal fixes from tool output | tel repair --tool ... --file ... |
| Triage | Clusters repeated regressions with evidence and history | tel triage --logs logs/regressions |
| Spec-to-SVA | Generates first-pass assertions from spec plus RTL | tel gen-sva --spec docs/uart.md --rtl rtl/uart_rx.sv |
| DUT-to-Cocotb | Scaffolds a grounded cocotb starter testbench | tel gen-cocotb --dut rtl/uart_rx.sv --spec docs/uart.md |
| Coverage Planning | Classifies uncovered items and ranks next actions | tel coverage-plan --report cov/coverage.json ... |
| Waveform Debug | Parses VCDs and inspects signals from CLI or shell | tel waveforms show ... |
| Benchmarks | Runs the built-in offline evaluation suite | tel eval run |
What It Looks Like
$ tel
tel[uart] sample_project> /index
Index Complete
indexed 18 chunks
tel[uart] sample_project> /triage --logs logs/regressions
Triage Summary
run run_... produced 2 cluster(s)
1. UART receiver start-bit regressions grouped together
likely cause: missing stimulus or broken start-bit detection path
suggested action: inspect uart_rx start-bit handling and nearby waveform evidence
evidence: docs/uart.md#L1, rtl/uart_rx.sv#L1, logs/regressions/run_a.log#L1
tel[uart] sample_project> /gen-sva --spec docs/uart.md --rtl rtl/uart_rx.sv
Spec-to-SVA Result
provider: heuristic
status: validated
artifact: .tel/artifacts/generated/uart_rx_assertions.sv
validation: passed
How It Works
flowchart LR
index["Index<br/>RTL, docs, logs, coverage, prior runs"]
retrieve["Retrieve<br/>Task-aware context with citations"]
workflow["Run Workflow<br/>agent, repair, triage, gen-sva, gen-cocotb, coverage-plan"]
validate["Validate<br/>tool adapters, syntax checks, reruns"]
replay["Replay<br/>artifacts, runs, benchmarks"]
store[("Filesystem-backed run store<br/>.tel/")]
index --> retrieve --> workflow --> validate --> replay
index --> store
retrieve --> store
workflow --> store
validate --> store
replay --> store
Telchines keeps the loop explicit:
- Index the project and build retrieval context.
- Run a verification workflow such as the review-gated agent path, repair, triage, generation, or coverage planning.
- Store evidence, artifacts, validation output, and replay metadata under
.tel/. - Reuse prior runs and benchmark the behavior over time.
Architecture Snapshot
flowchart LR
interface["Engineer Interface<br/>CLI, interactive shell, human-readable and JSON modes"]
core["Workflow Core<br/>agent, repair, triage, gen-sva, gen-cocotb, coverage-plan, waveforms"]
grounding["Grounding Layer<br/>retrieval index, context packs, run memory"]
edge["Execution Edge<br/>tool adapters, providers, policy controls"]
dataplane[("Filesystem-backed data plane<br/>runs, artifacts, citations, waveform summaries, benchmark reports, replay commands under .tel/")]
interface --> core
core --> grounding
grounding --> edge
core --> dataplane
grounding --> dataplane
edge --> dataplane
Quick Start
Install the current release from PyPI:
pip install telchines
For local development from a checkout:
python -m venv .venv
. .venv/Scripts/activate
pip install -e .[dev]
Validate the install:
tel --version
telchines --help
Initialize and index a project:
tel project init .
tel index
tel index status
tel providers list
tel providers check heuristic
Run a few common workflows:
tel retrieve "uart timeout handling"
tel agent "fix the broken counter compile failure" --tool verilator --file rtl/broken_counter.sv
tel triage --logs logs/regressions --format human
tel gen-sva --spec docs/uart.md --rtl rtl/uart_rx.sv
tel gen-cocotb --dut rtl/uart_rx.sv --spec docs/uart.md --intent "smoke the start-bit path"
tel coverage-plan --report cov/coverage.json --rtl rtl/uart_rx.sv --spec docs/uart.md --format human
Interactive Shell
Running tel with no arguments opens the shell. Use tel shell --plain for the stdin/stdout shell or tel shell --fullscreen to request the prompt_toolkit full-screen shell explicitly. Slash commands and lightweight plain-text intents are both supported.
tel> /help
tel> /providers
tel> /providers check heuristic
tel> /index
tel> /index status
tel> /agent "fix the broken counter compile failure" --tool verilator --file rtl/broken_counter.sv
tel> /triage --logs logs/regressions
tel> /gen-sva --spec docs/uart.md --rtl rtl/uart_rx.sv
tel> show my providers
tel> triage the regression logs
tel> /exit
Adapter And Provider Model
Built-in adapters in v1:
verilatoriverilogslangveriblesymbiyosys
Provider kinds in v1:
heuristicopenai_compatibleanthropiclocal_commandagent_runtime(optional repair-loop pilot; installtelchines[agentic]for LangGraph dependencies)
Policy controls:
model_mode=localblocks external HTTP providers, while allowing built-in, local command, and loopback local HTTP providersmodel_mode=remoteblocks local command providersmodel_mode=hybridallows bothno_egress=trueblocks external HTTP providers
Artifact lifecycle controls:
tel doctor privacyreports provider egress, local command, and artifact-retention riskstel artifacts purgepreviews artifact cleanup by defaulttel artifacts purge --scope task-artifacts --older-than-days 30 --yesdeletes only matching old artifact payloads while preserving run metadata
See docs/adapters.md, docs/providers.md, and docs/generated-artifacts.md for the exact support contract.
Benchmarks And Release Validation
Telchines ships with an offline benchmark suite covering:
- repair
- review-gated agent loop
- triage
- retrieval
- spec-to-SVA
- DUT-to-cocotb
- coverage planning
Run it with:
tel eval run
tel eval report
When run inside an initialized Telchines project, tel eval run persists the latest report under .tel/reports. When run outside a project, it uses a temporary scratch project and prints a non-persisted report with project_context: "scratch"; inspect the report's total field for the current default suite size.
v1 Scope
Included:
- interactive shell and one-shot CLI
- project indexing and retrieval
- run storage and replay
- review-gated
agent, repair, triage, waveform inspection,gen-sva,gen-cocotb, andcoverage-plan - provider policy controls for
local,hybrid,remote, andno_egress - built-in benchmark suite
Not in v1:
- web UI
- hosted service
- enterprise-only integrations
- richer shell affordances like command palettes and
@filementions - broader regression-manager integrations beyond the current adapter surface
Documentation
- Quickstart
- Worked Examples
- Provider Configuration
- Local LLMs
- Adapter Support And Contribution Contract
- External Retrieval Policy
- Evaluation And Benchmarks
- Compatibility Promise
- Release Checklist
Stability Promise For v1
The 1.x line treats these interfaces as stable unless explicitly deprecated:
- top-level CLI command names
.tel/config.jsonlayout- run-store replay artifacts
- JSON output shape for the main workflow commands
See docs/compatibility.md for the exact boundary.
Full CLI Surface
teltel shelltel project inittel indextel index statustel index cleantel retrievetel agenttel repairtel triagetel coverage-plantel gen-svatel gen-cocotbtel waveforms listtel waveforms showtel waveforms signalstel waveforms inspecttel runs listtel runs showtel runs doctortel runs import MANIFESTtel runs replay RUN_IDpreview andtel runs replay RUN_ID --yesexecutiontel adapters listtel adapters checktel providers listtel providers checktel artifacts purgetel artifacts purge --scope task-artifacts --older-than-days DAYStel doctor privacytel eval runtel eval report
Development
pip install -e .[dev]
pytest
Project contribution and disclosure guidance:
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file telchines-1.1.1.tar.gz.
File metadata
- Download URL: telchines-1.1.1.tar.gz
- Upload date:
- Size: 613.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
248634634bf655a416cc47f73e0ce1cd1a3cd8a95453bdc703a9515650317c7c
|
|
| MD5 |
c3f260bcf43c2a6786826dab3c026312
|
|
| BLAKE2b-256 |
4409ba1344b85d617941f2ae99b47798f5abfe7e369647ba908e2006ba1c78b7
|
Provenance
The following attestation bundles were made for telchines-1.1.1.tar.gz:
Publisher:
publish-pypi.yml on ivanbard/telchines
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
telchines-1.1.1.tar.gz -
Subject digest:
248634634bf655a416cc47f73e0ce1cd1a3cd8a95453bdc703a9515650317c7c - Sigstore transparency entry: 2166507467
- Sigstore integration time:
-
Permalink:
ivanbard/telchines@2dcd639734bb54050ae22af6e7a67c8acfe73f31 -
Branch / Tag:
refs/tags/v1.1.1 - Owner: https://github.com/ivanbard
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@2dcd639734bb54050ae22af6e7a67c8acfe73f31 -
Trigger Event:
push
-
Statement type:
File details
Details for the file telchines-1.1.1-py3-none-any.whl.
File metadata
- Download URL: telchines-1.1.1-py3-none-any.whl
- Upload date:
- Size: 215.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1544d4bbc2b671f7358aaba08add7164d83e0befa819c3170e15f5e6b1f15c46
|
|
| MD5 |
d7297298b0de49c555b1d3e2dcfe7e5e
|
|
| BLAKE2b-256 |
4dc21a6b9006ede914061caae76dd281ca7b15d3a58d4157a64d6290f12ab5db
|
Provenance
The following attestation bundles were made for telchines-1.1.1-py3-none-any.whl:
Publisher:
publish-pypi.yml on ivanbard/telchines
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
telchines-1.1.1-py3-none-any.whl -
Subject digest:
1544d4bbc2b671f7358aaba08add7164d83e0befa819c3170e15f5e6b1f15c46 - Sigstore transparency entry: 2166507532
- Sigstore integration time:
-
Permalink:
ivanbard/telchines@2dcd639734bb54050ae22af6e7a67c8acfe73f31 -
Branch / Tag:
refs/tags/v1.1.1 - Owner: https://github.com/ivanbard
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@2dcd639734bb54050ae22af6e7a67c8acfe73f31 -
Trigger Event:
push
-
Statement type: