Investigation tracking service for AI-based debugging sessions. Captures facts, evidence, hypotheses, and findings during investigations for persistence and later review.
- Dual-Mode Operation: Local (embedded databases) or production (MongoDB + OAuth)
- MCP Integration: Model Context Protocol for Claude Code integration
- Investigation Tracking: Key investigations by Jira ticket ID
- Fact Recording: Log entries, query results, code paths, evidence, code commits
- Hypothesis Tracking: Decision tree with validation status and linked facts
- Document Storage: Markdown documents per investigation
- Web UI: Review investigations with tabbed detail view
- Multi-User Support: Teams, visibility controls, and role-based access
- Java 17+
- Maven 3.9+
- Docker (for MongoDB in production mode)
Local mode uses embedded databases with no external services required:
./scripts/run-local.shDefault credentials: admin / password
Custom credentials:
LOCAL_USERNAME=myuser LOCAL_PASSWORD=mypass ./scripts/run-local.shProduction mode uses MongoDB and stub authentication for development:
# Start MongoDB
docker-compose up -d
# Start server with user picker
./scripts/run-dev.sh| Endpoint | URL |
|---|---|
| Notes UI | http://localhost:4567/notes |
| User Profile | http://localhost:4567/profile |
| Admin Panel | http://localhost:4567/admin |
| MCP Endpoint | http://localhost:4567/mcp |
| REST API | http://localhost:4567/api |
| Script | Description |
|---|---|
./scripts/run-local.sh |
Build and run in local single-user mode |
./scripts/run-dev.sh |
Build and run in production mode with stub auth |
./scripts/mongo-backup.sh |
Create timestamped MongoDB backup |
Log into the web UI, go to your Profile page, and expand the "MCP Token" section to reveal your token.
Add to your Claude Code MCP configuration:
{
"mcpServers": {
"truth-teller": {
"url": "http://localhost:4567/mcp",
"headers": {
"Authorization": "Bearer <your-mcp-token>"
}
}
}
}cp skills/*.md /path/to/project/.claude/commands//init-investigation https://axonify.atlassian.net/browse/CI-4126
| Component | Technology |
|---|---|
| Web Framework | SparkJava |
| Template Engine | Thymeleaf |
| Document Database | MongoDB (production) / Nitrite (local) |
| Relational Database | SQLite |
| CSS | Tailwind CSS |
| Protocol | MCP (Model Context Protocol) |
truth_teller/
├── pom.xml
├── docker-compose.yml
├── scripts/ # Build and run scripts
├── skills/ # Claude Code skills
├── docs/ # Documentation
└── src/
├── main/
│ ├── java/.../truthteller/
│ │ ├── api/ # REST API and Notes UI
│ │ ├── auth/ # Authentication
│ │ ├── config/ # Configuration
│ │ ├── di/ # Guice modules
│ │ ├── mcp/ # MCP handler and tools
│ │ ├── model/ # Domain models
│ │ ├── repository/ # Data access
│ │ ├── service/ # Business logic
│ │ └── util/ # Utilities
│ └── resources/
│ ├── templates/ # Thymeleaf templates
│ └── public/ # Static assets (CSS, JS)
└── test/ # Unit tests
| Document | Description |
|---|---|
| ARCHITECTURE.md | System design, diagrams, data model |
| DEVELOPMENT.md | Development setup, configuration, debugging |
| MCP_SPECIFICATION.md | MCP tools, authentication, examples |
| DEPLOYMENT.md | Google Cloud deployment guide |
| TESTING.md | Test patterns and coverage |
| PRODUCTION_READINESS.md | Vendor abstractions, localization plan |
Code review documents are in docs/reviews/.
| Variable | Default | Description |
|---|---|---|
TRUTH_TELLER_MODE |
remote |
local or remote |
PORT |
4567 |
Server port |
| Variable | Default | Description |
|---|---|---|
LOCAL_USERNAME |
admin |
Login username |
LOCAL_PASSWORD |
password |
Login password |
LOCAL_DISPLAY_NAME |
Local Admin |
Display name |
See DEVELOPMENT.md for the full configuration reference.
Internal use only.