The CRISP-T Web UI provides a browser-based interface for interacting with CRISP-T's qualitative research tools using the GitHub Copilot SDK. It allows researchers to perform mixed-methods analysis through a conversational AI interface without needing to use the command line directly.
- AI-Powered Chat Interface: Interact with CRISP-T through natural language conversations
- Multiple Model Support: Dynamically loads all available models from GitHub Copilot SDK (GPT-5.2, GPT-5.1, GPT-4.1, Claude Opus 4.6, Claude Sonnet 4.5, o-series, and more)
- Custom Provider Support: Use local models (Ollama) or custom OpenAI-compatible APIs
- Real-time Streaming: Get responses as they're generated
- CRISP-T CLI Integration: Full access to all CRISP-T commands (crisp, crispt, crispviz)
- Easy Configuration: Simple web interface for setting up your research environment
- Python 3.10+ installed
- CRISP-T installed with Copilot support:
pip install crisp-t[copilot]
- GitHub Copilot CLI installed and configured:
- Follow the Copilot CLI installation guide
- Login using:
gh auth loginorcopilot auth login
Check that everything is installed correctly:
# Verify CRISP-T CLI tools
crisp --help
crispt --help
crispviz --help
# Verify Copilot CLI
copilot --version
# Verify Web UI command
crisp-ui --helpStart the server on the default host and port (127.0.0.1:5000):
crisp-uiThen open your browser and navigate to: http://127.0.0.1:5000
# Start on a custom port
crisp-ui --port 8080
# Allow external connections (use 0.0.0.0 to bind to all interfaces)
crisp-ui --host 0.0.0.0 --port 8080
# Run in debug mode (for development)
crisp-ui --debugThe left panel contains configuration options:
Choose the AI model to use for your research assistant. The Web UI dynamically loads all available models from the GitHub Copilot SDK, including:
GPT Models:
- GPT-5.2, GPT-5.1, GPT-5 (latest models with advanced reasoning)
- GPT-5.1 Codex, GPT-5 Codex (optimized for code)
- GPT-4.1, GPT-4o, GPT-4 (proven reliable models)
- GPT-4o Mini (faster, cost-effective)
Claude Models:
- Claude Opus 4.6, Claude Opus 4 (most capable)
- Claude Sonnet 4.5, 4, 3.5 (balanced performance)
- Claude Haiku 3.5 (fast responses)
OpenAI o-series:
- o3-mini, o1-preview, o1-mini (specialized reasoning models)
The available models depend on your GitHub Copilot subscription and may vary over time. The UI automatically fetches the current list of supported models from the Copilot SDK.
Specify the path to your research data:
- Enter the path to a folder containing your data files
- Supported formats:
.txt,.pdf,.csv - Example:
./dataor/home/user/research_data
Check this box to use a custom AI provider:
- Provider Type: OpenAI, Azure OpenAI, or Anthropic
- Base URL: API endpoint (e.g.,
http://localhost:11434/v1for Ollama) - API Key: Your API key (optional for local providers like Ollama)
Example: Using Ollama locally
Provider Type: OpenAI
Base URL: http://localhost:11434/v1
API Key: (leave empty)
Optionally provide a GitHub token for authentication:
- Required if not using the logged-in Copilot CLI session
- Generate a token at: https://github.com/settings/tokens
The right panel contains the chat interface:
- Configure your settings in the left panel
- Click "Start Session"
- Wait for the connection indicator to turn green
- Start chatting with the AI assistant
- Type your message in the text box at the bottom
- Press Enter or click "Send"
- Wait for the AI response
Importing Data:
You: Import data from ./data folder and show me what's in the corpus
AI: I'll import your data using CRISP-T...
[Executes: crisp --source ./data --out corpus]
Topic Modeling:
You: Perform topic modeling with 5 topics on the imported data
AI: I'll run topic modeling analysis...
[Executes: crisp --inp corpus --topics --num 5 --assign --out corpus]
Visualization:
You: Generate a word cloud of the most frequent terms
AI: I'll create a word cloud visualization...
[Executes: crispviz --inp corpus --wordcloud --out visualizations]
Complex Analysis:
You: Import the CSV data with "comments" as the text column,
perform sentiment analysis, and create a correlation heatmap
AI: I'll perform a comprehensive analysis...
[Executes multiple commands in sequence]
1. You: "Import data from ./interviews folder"
2. You: "Generate a coding dictionary"
3. You: "Perform topic modeling with 5 topics"
4. You: "Show me the main themes"
5. You: "Create a word cloud visualization"
1. You: "Import CSV data from ./survey with 'open_response' as text column"
2. You: "Run topic modeling and sentiment analysis"
3. You: "Link the topic findings to the satisfaction_score variable"
4. You: "Run a regression analysis to see which topics predict satisfaction"
5. You: "Create a visualization showing the relationships"
1. You: "Import time-stamped data from ./longitudinal"
2. You: "Link documents to rows by nearest timestamp"
3. You: "Filter data to the first quarter of 2025"
4. You: "Analyze sentiment changes over time"
5. You: "Create a temporal summary by week"
The Web UI supports multiple authentication methods for GitHub Copilot:
If you've logged in using gh auth login or copilot auth login, the Web UI will use your stored credentials automatically.
Provide a personal access token in the Advanced Settings:
- Generate a token at https://github.com/settings/tokens
- Paste it in the "GitHub Token" field
- Start your session
Use your own API keys without GitHub authentication:
- Check "Use Custom Provider"
- Select provider type
- Enter base URL and API key
- No GitHub token needed
Problem: The github-copilot-sdk package is not installed.
Solution: Install CRISP-T with Copilot support:
pip install crisp-t[copilot]Problem: CRISP-T CLI tools are not in the PATH.
Solution: Ensure CRISP-T is installed and accessible:
which crisp
# If not found, reinstall:
pip install crisp-t[ml]Problem: The Copilot CLI is not installed or not logged in.
Solution:
- Install Copilot CLI: Follow installation guide
- Login:
gh auth loginor provide a GitHub token in the UI
Problem: The session appears stuck or not responding.
Solution:
- Wait a few moments - some operations take time
- Check the browser console for errors (F12)
- Stop and restart the session
- Restart the server if issues persist
Problem: Cannot start server on default port 5000.
Solution: Use a different port:
crisp-ui --port 8080-
Install and start Ollama:
# Install Ollama (see https://ollama.ai) # Pull a model ollama pull deepseek-coder-v2:16b
-
Configure in the Web UI:
- Check "Use Custom Provider"
- Provider Type: OpenAI
- Base URL:
http://localhost:11434/v1 - API Key: (leave empty)
- Model:
deepseek-coder-v2:16b
-
Start your session and chat!
-
Configure in the Web UI:
- Check "Use Custom Provider"
- Provider Type: Azure
- Base URL:
https://your-resource.openai.azure.com - API Key: Your Azure OpenAI key
- Model: Your deployment name (e.g.,
gpt-4)
-
Start your session
If you're running the Web UI behind a reverse proxy (like nginx):
-
Start the server on localhost:
crisp-ui --host 127.0.0.1 --port 5000
-
Configure your proxy to forward requests to
http://127.0.0.1:5000 -
Ensure WebSocket support is enabled in your proxy configuration
The CRISP-T Web UI consists of three main components:
- Async ASGI web server using Quart (migrated from Flask)
- Session management with Copilot SDK
- REST API endpoints for frontend communication
- Properly handles async operations with native event loop support
- Configuration panel for settings
- Chat interface for conversations
- Real-time message updates via polling
- Responsive design for various screen sizes
- Creates sessions with custom tools
- Provides
execute_crisp_commandtool to the AI - Handles streaming responses
- Manages session lifecycle
The Web UI exposes the following REST API endpoints:
GET /api/health
Response: {"status": "ok", "copilot_available": true, "version": "1.0.0"}
GET /api/models
Response: {"models": ["gpt-5", "gpt-4.1", "claude-sonnet-4.5", ...]}
POST /api/session/create
Body: {
"session_id": "session-123",
"model": "gpt-5",
"config": {
"data_path": "./data",
"github_token": "ghp_...", // optional
"use_custom_provider": true, // optional
"provider_type": "openai",
"provider_base_url": "http://localhost:11434/v1",
"provider_api_key": "..." // optional
}
}
Response: {"status": "ok", "session_id": "session-123", "model": "gpt-5"}
POST /api/session/{session_id}/send
Body: {"prompt": "Import data from ./data"}
Response: {"status": "ok"}
GET /api/session/{session_id}/messages
Response: {
"messages": [
{"role": "user", "content": "Hello", "timestamp": "..."},
{"role": "assistant", "content": "Hi there!", "timestamp": "..."}
]
}
POST /api/session/{session_id}/destroy
Response: {"status": "ok"}
- Local Deployment: By default, the server binds to
127.0.0.1(localhost only) - Token Storage: GitHub tokens are not stored on the server - they're kept in memory only
- Data Access: The AI agent can execute CRISP-T commands, which can read/write files
- Network Access: When using external models, your data may be sent to third-party APIs
Best Practices:
- Run on localhost for personal use
- Use HTTPS when deploying externally
- Be cautious about data privacy when using cloud models
- Review the CRISP CLI skill to understand what commands can be executed
- Large Datasets: Use
--numand--recflags to limit data during testing - Model Selection: Faster models like GPT-4.1 for quick iterations
- Streaming: Enabled by default for real-time feedback
- Session Management: Stop sessions when not in use to free resources
To contribute to the Web UI:
- The UI code is in
src/crisp_t/ui/ - Follow the existing code structure
- Test with multiple models and configurations
- Update documentation for new features
- Ensure error handling is comprehensive
For issues and questions:
- GitHub Issues: https://github.com/dermatologist/crisp-t/issues
- Documentation: https://dermatologist.github.io/crisp-t/
- CRISP-T CLI Skill:
.agents/skills/crisp-cli/
CRISP-T Web UI is part of the CRISP-T project and is licensed under GPL-3.0.