OPEN-SOURCE PYTHON CLI•v0.1.0 on PyPI

See the problem. Understand the cause.

Dextora helps developers diagnose project setup, dependency, and environment issues through a focused command-line workflow.

$pip install dextora
Get StartedGitHub
Python ≥ 3.11•MIT Licensed•100% Read-Only
OBSERVINGpyproject.tomlSTR002 MANIFEST.venv/bin/pythonPY000 ACTIVE (3.11).env.exampleENV TEMPLATE OK.env (Staged in Git)GIT003 DETECTED ISSUEREMEDIATION EVIDENCE:git rm --cached .envCONFIRMED
AST & Manifest LexerZero Network Traversal • 18ms Scan
01 / What is broken?

Precise Rule Identification

Maps directory states to verified diagnostic codes (PY001, ENV001, GIT003) with exact file evidence.

02 / Why is it happening?

Root-Cause Correlation

Separates primary causal events (e.g. merge conflict markers) from cascading symptoms (e.g. invalid TOML syntax in pyproject.toml).

03 / How do I fix it?

Deterministic Remediation

Emits tailored shell commands customized for your package manager (pip, poetry, pipenv, npm, pnpm, bun) without altering files.

The Diagnostic Difference

Unclear symptoms vs. structured diagnostic findings.

Standard linters check code syntax inside individual files, but remain blind to environment drift, broken interpreter symlinks, and lockfile collisions. Dextora brings order to the workspace.

Unclear Development Symptoms
Symptom 01Unclear Exception

Mysterious ModuleNotFoundError on fresh clone

Often leads to hours of trial-and-error stackoverflow searches and redundant reinstalls.

Symptom 02Unclear Exception

Runtime 500 error on local test run

Often leads to hours of trial-and-error stackoverflow searches and redundant reinstalls.

Symptom 03Unclear Exception

Cascading TOMLDecodeError in pyproject.toml

Often leads to hours of trial-and-error stackoverflow searches and redundant reinstalls.

Symptom 04Unclear Exception

Accidental credential commit risk in Git index

Often leads to hours of trial-and-error stackoverflow searches and redundant reinstalls.

Dextora Diagnostic Resolution
[PY002] Root CauseDeterministic

Virtualenv interpreter symlink points to deleted Python path (PY002)

Fix:Re-binds runtime or specifies python3.11 -m venv .venv
[ENV002] Root CauseDeterministic

New keys declared in .env.example are missing from local .env (ENV002)

Fix:Identifies exact missing keys without reading secret values
[GIT005] Root CauseDeterministic

Unmerged Git conflict markers (<<<<<<< HEAD) inside manifest (GIT005)

Fix:Isolates git conflict as the true cause of syntax parser failure
[GIT003] Root CauseDeterministic

.env exists locally but was omitted from .gitignore file (GIT002 / GIT003)

Fix:git rm --cached .env && echo .env >> .gitignore
Offline & Non-Destructive

Every diagnosis is computed locally in under 45ms. Dextora never modifies files during doctor scans, never sends telemetry, and never parses confidential credentials.

Execution Time
< 45ms
File Mutations
0 (Read-Only)
Verified Inspection Suites

Six comprehensive diagnostic domains.

Every check in Dextora runs locally with deterministic rules. No hallucinated warnings, no remote registry calls.

PY000 — PY004Deterministic

Python Environment Verification

Discovers standard virtual environments (.venv, venv, env), verifies interpreter binary presence, checks site-packages status, and validates requires-python version constraints against active runtimes.

→ Virtualenv & Interpreter Health
DEP001 — DEP009Deterministic

Dependency & Lockfile Diagnostics

Detects orphaned lockfiles (poetry.lock without pyproject.toml), conflicting package managers (Pipenv + Poetry, pnpm + npm), duplicate packages, and unpinned dependencies in requirements.txt.

→ Drift & Manager Conflicts
ENV000 — ENV004Deterministic

Secret Redaction & Environment Privacy

Compares .env keys against .env.example templates. Secret values are never loaded into memory, displayed in terminal evidence, or included in JSON serialization.

→ 100% Zero-Leakage Guarantee
GIT000 — GIT005Deterministic

Version Control Integrity Checks

Detects unmerged Git conflict markers (<<<<<<<), verifies .gitignore coverage, and alerts immediately if sensitive files (.env) are tracked in the Git index.

→ Git Status & Staged Secrets
STR000 — STR003Deterministic

Multi-Framework Classification

Classifies Django, FastAPI, Flask, Next.js, React, Nuxt, Vue, SvelteKit, Angular, Astro, and composite fullstack architectures from declared dependencies and manifests.

→ Declared Manifest Recognition
Read-Only CoreDeterministic

Read-Only Non-Destructive Safety

Doctor diagnostics never mutate scanned files or execute arbitrary project scripts. Automatically skips heavyweight directories (.git, node_modules, .venv, caches).

→ Zero Script Execution
Deterministic Causal Engine

How scattered symptoms become an actionable diagnosis.

In real codebases, a single root failure triggers cascades of misleading warnings. Dextora maps causal relationships between diagnostic codes so you fix the source, not just the noise.

Heuristic: AST_GRAPH•Resolution: 14ms
Traversal: 2 HopsConfidence: 100%
Scattered Surface Symptoms:Count: 2
DEP006[Manifest Parsing]
ERROR
Malformed pyproject.toml TOML syntax exception
TomlDecodeError: Invalid character in key name at line 14
STR001[Structure Analysis]
WARNING
Cannot classify package dependencies or project type
Fails to determine project manager (poetry/flit/setuptools)
↓ ROOT CAUSE IDENTIFIED ↓
Primary Root CauseGIT005

Unresolved Git merge conflict markers (<<<<<<< HEAD)

The TOML syntax error and framework classification failure are direct downstream symptoms of unresolved git conflict markers.

•Found unresolved marker '<<<<<<< HEAD' inside dependency table
Targeted Remediation Command:Deterministic fix
Resolve git conflict markers manually in pyproject.toml before running dependency commands.
pyproject.tomlLexer Inspection Pass
12[tool.poetry.dependencies]
13python = "^3.11"
14<<<<<<< HEAD
15requests = "^2.31.0"
16=======
17requests = "^2.32.3"
18>>>>>>> feature/security-patch
19pydantic = "^2.6.0"
Authentic CLI Console

Deterministic terminal reporting.

Dextora operates locally on your repository with zero background network queries. Below is a faithful demonstration of its terminal reporting and exit codes.

[Sample Demonstration • Verified CLI Schema]
dextora-console ~ v0.1.0
$dextora doctor .
+------------------------------------------------+| Dextora v0.1.0 - Developer Diagnostics Toolkit || Target:       D:\Projects\ecommerce-api       || Project Type: Fullstack (FastAPI + Next.js)    || Checks Run:   8                                |+------------------------------------------------+ >>> WARNINGS (2)----------------------------------------[PY001] No Python virtual environment detected  Why:      Python projects should use an isolated virtual environment to prevent dependency pollution.  Evidence: Looked for: .venv, venv, env in project root.  Fix:      Create a virtual environment with 'python -m venv .venv' and activate it.  Command:  python -m venv .venv [ENV001] Environment template '.env.example' present but '.env' is missing (.env.example)  Why:      The project provides '.env.example' as an environment template, but no local '.env' file was found.  Evidence: Template: .env.example  Fix:      Copy '.env.example' to '.env' and fill in the required local configuration values.  Command:  cp .env.example .env >>> SUCCESSES (2)----------------------------------------[STR002] Project manifest detected (pyproject.toml, package.json)  Why:      Identified Python and JavaScript project configuration manifests.  Evidence: pyproject.toml, package.json  Fix:      No action required. [JS000] Consistent JavaScript package manager lockfile detected (pnpm-lock.yaml)  Why:      Single consistent lockfile detected for pnpm package manager.  Evidence: pnpm-lock.yaml  Fix:      No action required. >>> ROOT CAUSE ANALYSIS (1)----------------------------------------  Probable Root Cause: [ENV001] Environment template '.env.example' present but '.env' is missing  Secondary Symptoms:  Unconfigured database credentials, missing runtime secrets  Relationship:        New checkout or cloned environment without local initialization  Diagnostic Summary  Severity    Count  Errors          0  Warnings        2  Info            0  Successes       2 [!] Scan completed with 2 warning(s). Review the suggestions above.
Target: D:\Projects\ecommerce-api•Type: Fullstack (FastAPI + Next.js)
Exit Code: 0•Checks: 8
Diagnostic Architecture

How Dextora works.

A four-stage deterministic pipeline transforming unorganized codebase anomalies into verified, safe remediations.

[4-Stage Deterministic Pipeline]
STAGE 01Deterministic Boundary Traversal

Inspect the project

Dextora scans the project root to locate project manifests (pyproject.toml, requirements.txt, package.json), identifies virtual environment symlinks, and checks version control state without modifying scanned files.

Stat cache pass completes in < 15ms. Excludes .git, node_modules, and cache trees.
dextora-engine ~ stage 01OFFLINE
Pipeline Execution:
$ dextora doctor .
Input: Project Root→Discovered State
Stage 01

Inspect the project

Dextora scans the project root to locate project manifests (pyproject.toml, requirements.txt, package.json), identifies virtual environment symlinks, and checks version control state without modifying scanned files.

$ dextora doctor .
Stage 02

Surface diagnostic findings

Evaluates rules across 6 verified domains: virtual environments (PY), dependency lockfiles (DEP), environment templates (ENV), Git repository state (GIT), JavaScript manifests (JS), and project structure (STR).

$ >>> 3 findings detected [PY001, ENV001, GIT003]
Stage 03

Understand the cause

Rather than dumping disconnected errors, Dextora identifies causal relationships. It isolates root triggers (like unresolved Git conflicts) from cascading downstream parser exceptions with confirmed confidence levels.

$ Causal Link: GIT005 -> DEP006 (Cascading syntax error)
Stage 04

Review suggested actions

Emits copy-ready shell commands customized for your detected package manager (pip, poetry, pipenv, npm, pnpm, bun) or flags complex migrations that require human architectural review.

$ Fix: git rm --cached .env && echo .env >> .gitignore
Diagnostic Rule Directory

Deterministic diagnostic catalogue.

Every finding emitted by Dextora maps to a distinct identifier with an explanation, evidence rule, and suggested action.

CodeSeverityCategoryDescriptionRemediation Action
STR000ERRORStructureTarget path does not existThe specified target directory does not exist or is not accessible.Verify the directory path and ensure appropriate read permissions.
STR001WARNStructureScanned directory is emptyThe targeted project directory contains zero files or subdirectories.Initialize a project or verify that you targeted the intended workspace root.
STR002OKStructureStandard project manifest detectedIdentified valid project configuration manifests (e.g. pyproject.toml, package.json).No action required.
STR003INFOStructureGeneric directory without standard manifestDirectory contains files but lacks recognized project manifests.Run 'dextora init' to initialize project metadata.
PY000OKPythonActive virtual environment locatedStandard isolated virtual environment discovered and verified.No action required.
PY001WARNPythonNo Python virtual environment detectedPython projects should use an isolated virtual environment to prevent dependency pollution.python -m venv .venv && source .venv/bin/activate
PY002WARNPythonIncomplete or broken virtual environmentVirtual environment directory exists but lacks interpreter binary or pyvenv.cfg.Recreate the virtual environment using 'python -m venv --clear .venv'
PY003WARNPythonPython version mismatch with project requirementsRunning interpreter version does not satisfy the 'requires-python' constraint declared in pyproject.toml.Switch to Python >= 3.11 via pyenv or reinstall virtual environment.
PY004INFOPythonVirtual environment site-packages appears emptyVirtual environment exists and is active, but dependencies have not been installed.pip install -r requirements.txt or poetry install
DEP001WARNDependenciesPipfile found without corresponding Pipfile.lockUnpinned dependency graph can cause non-deterministic builds across developer machines.pipenv lock
DEP002ERRORDependenciesOrphaned poetry.lock without pyproject.tomlLockfile exists without the canonical declaration manifest that generated it.Restore pyproject.toml or remove stale poetry.lock
DEP004WARNDependenciesConflicting dependency managers detectedSimultaneous presence of Pipenv and Poetry causes ambiguous dependency resolution.Standardize on either Poetry or Pipenv and remove secondary artifacts.
DEP005INFODependenciesMultiple dependency definitions presentBoth Pipfile and requirements.txt exist in project root.Consolidate into single source of truth or document purpose of secondary list.
DEP006ERRORDependenciesMalformed pyproject.toml TOML syntaxSyntax error prevented parsing project configuration table.Correct syntax error in pyproject.toml.
DEP007WARNDependenciesMalformed requirement or duplicate packagesrequirements.txt contains duplicate declarations or conflicting version specifiers.Remove duplicate requirement line from requirements.txt
DEP008INFODependenciesUnpinned dependencies detectedPackages in requirements.txt lack strict version pins, creating potential drift.Pin package versions (e.g. fastapi==0.115.0)
DEP009WARNDependenciespyproject.toml lacks build-system or project tableModern PEP 517/621 packaging guidelines require [build-system] and [project] tables.Add [build-system] with requires = ['setuptools>=61.0'] and build-backend.
ENV000OKEnvironment.env variables fully synchronized with templateAll keys declared in .env.example are safely present in local .env without inspecting secret values.No action required.
ENV001WARNEnvironmentEnvironment template present but .env is missingThe project provides '.env.example' as a template, but no local '.env' file was found.cp .env.example .env && # populate local variables
ENV002WARNEnvironmentMissing environment variables declared in templateSpecific configuration keys declared in .env.example are absent from .env.Add missing keys to your local .env file.
ENV003WARNEnvironmentMalformed .dextora.toml syntaxSyntax error in project-level Dextora configuration file.Review .dextora.toml against standard schema.
ENV004OKEnvironmentValid .dextora.toml configuration loadedProject configuration file loaded with valid rules and thresholds.No action required.
GIT000INFOGitTarget directory is not a Git repositoryNo .git repository directory discovered in workspace hierarchy.git init
GIT001WARNGitNo .gitignore file found in Git repositoryProjects without .gitignore risk accidentally committing virtual environments, dependencies, or secrets.Create .gitignore and add .venv/, node_modules/, and .env
GIT002WARNGit.env exists but is not listed in .gitignoreUnprotected .env file risks being accidentally committed to version control.echo '.env' >> .gitignore
GIT003ERRORGitSensitive file tracked in Git indexA sensitive configuration or credential file is actively tracked in git stage or tree.git rm --cached .env && git commit -m 'Untrack sensitive .env file'
GIT004INFOGitGit author identity not configuredGit user.name or user.email is missing from repository or global config.git config user.name 'Dev Name' && git config user.email 'dev@domain.com'
GIT005ERRORGitUnresolved Git merge conflict markers detectedFile contains unmerged merge conflict markers ('<<<<<<<', '=======', '>>>>>>>').Resolve conflict markers manually before building or running tests.
JS000OKJavaScriptConsistent JavaScript lockfile detectedSingle, valid package manager lockfile corresponds to package.json.No action required.
JS001ERRORJavaScriptMalformed package.json syntaxpackage.json contains invalid JSON syntax and cannot be parsed.Fix trailing comma or syntax error in package.json.
JS002WARNJavaScriptMultiple conflicting JavaScript lockfiles detectedSimultaneous existence of package-lock.json and yarn.lock or pnpm-lock.yaml creates install confusion.Delete unused lockfile and stick to one package manager.
JS003INFOJavaScriptpackage.json has dependencies but no lockfile foundDependencies declared but lockfile has not been generated.Run 'npm install' or 'pnpm install' to generate a reproducible lockfile.
Showing 32 of 32 verified rulesDextora Core v0.1.0
Quick-Start Workflow

From zero to verified in seconds.

Standard Python packaging. No daemons, no background workers, no account creation. Just run and inspect.

dextora ~ step 01
Verified with Python 3.11 & 3.12

Install the standalone Python executable

Requires Python >= 3.11. Installs the zero-overhead dextora binary directly into your environment path.

$pip install dextora
Tip: Test without global install using: python -m dextora --version
Read CLI specs
Safety & Privacy Model

Engineered for safe execution in any codebase.

Dextora operates locally under strict non-destructive constraints. Run it across untrusted PRs, multi-tenant monorepos, and local workstations without side effects.

ENV000-004

Secret Key Privacy by Design

Compares declared variable names between .env and template files (.env.example, .env.sample). Secret values are never loaded into memory, displayed in terminal outputs, or included in JSON findings.

Values never stored in memory or JSON
Read-Only Core

100% Read-Only Diagnostics

The doctor command never writes to or deletes scanned files. File system modifications are strictly restricted to dextora init, which creates a local .dextora.toml and refuses to overwrite existing files without --force.

Zero repository filesystem mutations
Static AST & Lexer

Zero Project Code Execution

Dextora never imports or executes scanned project code, setup.py scripts, npm postinstall hooks, or recommended remediation commands. Diagnostics are purely static and isolated.

Safe to run on untrusted repositories
Bounded Traversal

Filesystem Boundary Discipline

Diagnostic sweeps do not traverse symlinks leading outside the target directory root. Automatically excludes heavyweight directories (.git, node_modules, .venv, caches, build artifacts).

Guaranteed bounded execution time
Offline Determinism Guarantee

Dextora performs static offline analysis of declared manifests, lockfiles, and environment templates. It does not phone home, does not query external registries, and does not require cloud credentials.

Open Source • Permissive MIT License

Built transparently for the Python developer community.

Dextora is free, community-driven software published under the MIT license. Inspect the Python scanner source, propose new framework rules, add diagnostic tests, or contribute enhancements.

Frequently Asked Questions

Technical answers to common questions.

Everything you need to know about compatibility, diagnostic mechanics, and CI/CD integration.

Linters inspect syntax and AST style inside individual Python files. Dextora is a workspace & environment diagnostic engine: it validates virtualenv interpreter links, detects conflicting package manager lockfiles (e.g. poetry vs requirements.txt), inspects missing keys across .env templates, verifies git merge conflict remnants in config files, and classifies project framework setups.