code-search-chat v0.3.0-rc9
Code Search Chat Interface
A web interface for the Probe code search tool, powered by AI (Anthropic Claude or OpenAI GPT).
Features
- Interactive chat interface for code search
 - Support for both Anthropic Claude and OpenAI GPT models
 - Multiple search tools: search, query, and extract
 - Markdown rendering with syntax highlighting
 - Mermaid diagram support
 - Streaming responses for real-time feedback
 - API endpoints for programmatic access
 - Optional basic authentication
 - Uses the @buger/probe npm package
 
Setup
Environment Variables
Create a .env file in the web directory with the following variables:
# Required: At least one of these API keys must be provided
ANTHROPIC_API_KEY=your_anthropic_api_key
OPENAI_API_KEY=your_openai_api_key
# Optional: Override the default model
MODEL_NAME=claude-3-7-sonnet-latest  # or gpt-4o, etc.
# Optional: Override the default API URLs
ANTHROPIC_API_URL=https://api.anthropic.com
OPENAI_API_URL=https://api.openai.com/v1
# Optional: Configure the port (default: 3000)
PORT=8080
# Optional: Enable debug mode
DEBUG=true
# Optional: Enable raw request debugging to see the exact prompts sent to LLMs
DEBUG_RAW_REQUEST=true
# You can combine both for maximum debugging information
DEBUG=true DEBUG_RAW_REQUEST=true
# Required: Configure folders to search
ALLOWED_FOLDERS=/path/to/repo1,/path/to/repo2
# Optional: Authentication settings
AUTH_ENABLED=true  # Set to true to enable authentication
AUTH_USERNAME=admin  # Custom username (default: admin)
AUTH_PASSWORD=secure_password  # Custom password (default: password)Running Locally
Install dependencies:
npm installStart the server:
npm startOpen your browser and navigate to
http://localhost:8080(or whatever port you configured)
Docker
Building the Docker Image
docker build -t code-search-chat .Running with Docker
docker run -p 8080:8080 \
  -e ANTHROPIC_API_KEY=your_anthropic_api_key \
  -e ALLOWED_FOLDERS=/app/code1,/app/code2 \
  -v /path/to/local/code1:/app/code1 \
  -v /path/to/local/code2:/app/code2 \
  code-search-chatOr with OpenAI and authentication:
docker run -p 8080:8080 \
  -e OPENAI_API_KEY=your_openai_api_key \
  -e MODEL_NAME=gpt-4o \
  -e ALLOWED_FOLDERS=/app/code1,/app/code2 \
  -e AUTH_ENABLED=true \
  -e AUTH_USERNAME=admin \
  -e AUTH_PASSWORD=secure_password \
  -v /path/to/local/code1:/app/code1 \
  -v /path/to/local/code2:/app/code2 \
  code-search-chatEnvironment Variables in Docker
All the environment variables mentioned in the Setup section can be passed to the Docker container using the -e flag.
API Documentation
The application provides a full OpenAPI specification at /openapi.yaml. You can use this specification with tools like Swagger UI or Postman to explore and test the API.
API Endpoints
The application provides the following API endpoints:
1. Search Code (POST /api/search)
Search code repositories using the Probe tool.
Request:
{
  "keywords": "search pattern",
  "folder": "/path/to/repo",
  "exact": false,
  "allow_tests": false
}Parameters:
keywords(required): Search patternfolder(optional): Path to search in (must be one of the allowed folders)exact(optional): Use exact match (default: false)allow_tests(optional): Include test files in results (default: false)
Response:
{
  "results": "search results text",
  "command": "probe command that was executed",
  "timestamp": "2025-08-03T07:10:00.000Z"
}2. Query Code (POST /api/query)
Search code using ast-grep structural pattern matching.
Request:
{
  "pattern": "function $NAME($$$PARAMS) { $$$BODY }",
  "path": "/path/to/repo",
  "language": "javascript",
  "allow_tests": false
}Parameters:
pattern(required): AST pattern to search forpath(optional): Path to search in (must be one of the allowed folders)language(optional): Programming language to use for parsingallow_tests(optional): Include test files in results (default: false)
Response:
{
  "results": "query results text",
  "timestamp": "2025-08-03T07:10:00.000Z"
}3. Extract Code (POST /api/extract)
Extract code blocks from files based on file paths and optional line numbers.
Request:
{
  "file_path": "src/main.js:42",
  "line": 42,
  "end_line": 60,
  "allow_tests": false,
  "context_lines": 10,
  "format": "plain"
}Parameters:
file_path(required): Path to the file to extract fromline(optional): Start line numberend_line(optional): End line numberallow_tests(optional): Allow test files (default: false)context_lines(optional): Number of context lines (default: 10)format(optional): Output format (default: "plain")
Response:
{
  "results": "extracted code text",
  "timestamp": "2025-08-03T07:10:00.000Z"
}4. Chat with AI (POST /api/chat)
Send a message to the AI and get a response.
Request:
{
  "message": "your question about the code",
  "stream": true
}Parameters:
message(required): The message to send to the AIstream(optional): Whether to stream the response (default: true)
Response (stream=false):
{
  "response": "AI response text",
  "toolCalls": [
    {
      "name": "searchCode",
      "arguments": {
        "keywords": "search pattern",
        "folder": "/path/to/repo"
      },
      "result": "search results"
    }
  ],
  "timestamp": "2025-08-03T07:10:00.000Z"
}Response (stream=true): Text stream of the AI response.
Authentication
When authentication is enabled (AUTH_ENABLED=true), all endpoints (both UI and API) require basic authentication. The default username is admin and the default password is password, but these can be customized using the AUTH_USERNAME and AUTH_PASSWORD environment variables.
To authenticate API requests, include the Authorization header with the value Basic <base64-encoded-credentials>, where <base64-encoded-credentials> is the Base64 encoding of username:password.
Example:
Authorization: Basic YWRtaW46cGFzc3dvcmQ=API Model Support
The application will use the first available API in this order:
1. Anthropic Claude (if ANTHROPIC_API_KEY is provided)
2. OpenAI GPT (if OPENAI_API_KEY is provided)
You can override the default model by setting the MODEL_NAME environment variable.
Default models:
- Anthropic: 
claude-3-7-sonnet-latest - OpenAI: 
gpt-4o 
Custom API URLs
If you're using a proxy or a custom endpoint for the APIs, you can override the default URLs:
ANTHROPIC_API_URL: Default ishttps://api.anthropic.comOPENAI_API_URL: Default ishttps://api.openai.com/v1
Dependencies
This application uses the following key dependencies:
- @buger/probe: Node.js wrapper for the probe tool
 - Vercel AI SDK: The AI SDK used for model integration
 - Marked.js: For Markdown rendering
 - Highlight.js: For syntax highlighting
 - Mermaid.js: For diagram rendering