DogiCat DMS
Don't just browse your database. Follow the evidence.
A Python desktop workbench for exploring databases, tracing records,
comparing changes, and investigating with your own AI model.
简体中文 · Quick start · Try the demo · AI setup
The payment succeeded. Why is the order still pending?
Start with one record. Follow its relationships, compare what changed, and share the evidence—not access to your entire database.
DogiCat brings everyday database management and a read-only investigation workspace into the same app. SQLite and the built-in demo work without extra Python packages. AI is optional.
Five ways to go beyond a query result
| You need to… | DogiCat helps you… |
|---|---|
| Understand one suspicious record | Trace records across captured tables using declared foreign keys or relationships you explicitly confirm. |
| See exactly what changed | Compare before/after snapshots, including old and new field values, added/deleted records, and schema changes. |
| Reproduce a problem with someone else | Review field masking, export a .dogicatcase, and reopen it offline without source-database credentials. |
| Inspect a dump without its server | Preview supported SQLite and simple MySQL SQL dumps in an isolated in-memory database, with a compatibility report. |
| Get a second pair of eyes | Bring an API or local model, inspect the context, and ask for explanations or SQL drafts. AI never executes SQL. |
A record is the starting point
The included fictional dataset has an order with a successful payment but a stale status:
flowchart LR
O["orders · 1001<br/>status = pending"]
C["customers · 1"]
I["order_items<br/>Keyboard × 1"]
P["payments<br/>status = success"]
O --- C
O --- I
O --- P
Illustrative relationships from the demo dataset—not an application screenshot or proof of why the inconsistency occurred.
Follow the records → capture a baseline → make a controlled change → compare → review and share.
Start in one command
Download or clone this repository, then run:
git clone https://github.com/HeartingU/Dogicat_DMS.git
cd Dogicat_DMS
python main.py
You need Python 3.9+ with Tk. On Windows, use a Python installation that includes Tcl/Tk. No database server, model, or API key is needed for the demo.
| Database | Setup |
|---|---|
| SQLite | Included with Python; no extra driver needed. |
| MySQL | Install mysql-connector-python. |
| PostgreSQL | Install psycopg2-binary. |
Install only the optional drivers you need:
python -m pip install mysql-connector-python psycopg2-binary
The app starts in Chinese by default. Choose 菜单 → 语言 → English to switch. Language changes are remembered and preserve open tabs, SQL and input; some older administration messages are still Chinese.
Try the investigation in two minutes
Open Menu → Tools → Try demo. DogiCat creates a fresh, fictional SQLite database.
Select
orders, chooseid, enter1001, and click Trace records. Inspect its customer, line item and successful payment.Click Mark as before to keep the baseline.
In the SQL editor for that demo connection only, run:
UPDATE orders SET status = 'paid' WHERE id = 1001;Return to the investigation tab and click Capture and compare. You should see
statuschange frompendingtopaid.Export a case, review the masking preview, then reopen it with Open case.
Want an AI explanation? Click Ask AI, configure your service, review the exact context and send a question. Nothing is sent simply by opening the assistant.
Your model. Your context. Your decision.
Use an online API or a local model server. The implemented protocols cover OpenAI Responses, Chat Completions-compatible APIs, and Ollama. LM Studio can use the compatible API option.
- Five built-in tasks: investigate data, draft read-only SQL, explain errors, interpret diffs, and analyze relationships.
- Inspect before sending: start with schema-only context; add records/diffs explicitly, then review and edit the text.
- Choose the language: prompts and answers follow the interface by default, with a separate override.
- Keep execution in your hands: answers are suggestions, never automatically executed database commands.
- No model required: browsing, editing, tracing, diffs and offline cases work without AI.
Models and servers are not bundled or started by DogiCat. Actual endpoint/model combinations need testing in your environment.
Configure APIs and local models →
Still a database workbench
Alongside investigation tools, you get:
- Multi-database navigation and remembered connections.
- SQL editing, query history, data editing and table-structure tools.
- Search, filtering, sorting, and current-connection search across non-system databases.
- ER diagrams and SQL/CSV import/export workflows.
- Light/dark themes, switchable Chinese/English UI, and a resizable explorer.
- Font-sized tab close targets and batched table rendering to keep interaction responsive.
Recent local checks: a 10,001-row, two-column table rendered in 0.50–0.77 seconds; 25 repeated AI-tab open/close cycles left no extra pages or accumulating timers. These are local Windows measurements, not database-query benchmarks or guarantees for all workloads.
See the methodology and full performance notes →
Clear boundaries, fewer surprises
DogiCat is actively developed. It is an independent project—not affiliated with Navicat and not a claim of feature parity.
- Evidence snapshots are not backups. Captures are sequential reads, not atomic cross-table snapshots. Comparing two observations does not prove which action caused a change.
- Capture limits are explicit: 10,000 rows per table and 50,000 total. Oversized captures are rejected without replacing the previous snapshot. These limits do not reintroduce a cap on ordinary table browsing.
- Offline SQL is a supported-subset preview. It is not a complete restore engine; unsupported or simplified statements are reported.
- Masking needs review. Pseudonymization is not guaranteed anonymization. Raw snapshots are unredacted; case files are not encrypted.
- Local-first does not mean every AI request stays local. Sending to a remote model transmits the reviewed context to that service under its policies. Do not commit
.dogicat/, keys, dumps, logs, snapshots or case files. - Validation has a scope. Windows desktop and offline/mock-service tests are covered; production MySQL/PostgreSQL workflows, every model provider, and other desktop platforms still need target-environment verification.
More detail on limits and cancellation
- Tracing uses captured data only. Depth is configurable from 0–8, the default bound is 250 records, and the graph displays up to 100; the report retains the traversal results.
- Tables without stable primary keys use whole-row multiset comparison rather than claiming exact row identity.
- Offline SQL preview accepts files up to 32 MiB and statements up to 4 MiB. It does not execute source triggers, procedures, extensions, arbitrary scripts or PostgreSQL
COPY. Live import is a separate workflow. - AI evidence context is capped at 48,000 characters. Schema defaults, table names and pasted text can still contain sensitive information.
- Cancel stops local work or discards a pending response; it may not terminate a database query or remote inference already running.
- Saving an API key securely is an explicit Windows DPAPI option; environment variables and session-only keys are also supported.
Build confidence, then build features
python -m compileall -q dogicat tests tools
python -m unittest discover -s tests -v
python tools/smoke_investigation.py
python tools/smoke_responsiveness.py
The GUI checks require a desktop session. Tests use fictional SQLite data and mock services, not production credentials.
Found a bug? Open an issue with reproduction steps and a minimal fictional example—not a real customer dump.
Contribution guide · Changelog · Release checklist
License: The Unlicense, preserved from this repository's initial commit.
If tracing a record is part of your daily work, star the project to follow its progress. Useful bug reports and reproducible examples help shape what comes next.
Comments