{"id":43897646,"url":"https://github.com/codelibs/intaste","last_synced_at":"2026-02-06T17:45:11.433Z","repository":{"id":319099816,"uuid":"1074745938","full_name":"codelibs/intaste","owner":"codelibs","description":"Intelligent Assistive Search","archived":false,"fork":false,"pushed_at":"2025-12-31T06:03:37.000Z","size":1639,"stargazers_count":2,"open_issues_count":5,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-01-02T14:49:18.981Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/codelibs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":"NOTICE","maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-10-12T12:01:52.000Z","updated_at":"2025-12-31T06:03:42.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/codelibs/intaste","commit_stats":null,"previous_names":["codelibs/intaste"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/codelibs/intaste","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codelibs%2Fintaste","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codelibs%2Fintaste/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codelibs%2Fintaste/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codelibs%2Fintaste/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/codelibs","download_url":"https://codeload.github.com/codelibs/intaste/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codelibs%2Fintaste/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29171024,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-06T16:33:35.550Z","status":"ssl_error","status_checked_at":"2026-02-06T16:33:30.716Z","response_time":59,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-02-06T17:45:10.807Z","updated_at":"2026-02-06T17:45:11.424Z","avatar_url":"https://github.com/codelibs.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Intaste — Intelligent Assistive Search Technology\n\n[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](LICENSE)\n\n\u003e **An open platform for intelligent, assistive, and human-centered search**\n\n**Intaste** is an open-source AI-assisted search platform that combines enterprise-grade search with intelligent assistance. It uses search results as transparent evidence and provides concise, cited answers with LLM-powered understanding—keeping users in control while delivering actionable insights.\n\n## Why Intaste?\n\n- **🤖 AI-Powered Intelligence**: Natural language query understanding, relevance evaluation, and evidence-based answer composition with automatic citation\n- **🏢 Enterprise Search Foundation**: Built on [Fess](https://fess.codelibs.org/), a battle-tested enterprise search platform with powerful crawling and indexing capabilities\n- **🔒 Privacy-First**: Uses local LLM (Ollama) by default—no external API calls, no data leakage, full control over your search data\n- **🌐 Open Source**: Apache 2.0 licensed with active community development and transparent architecture\n- **⚡ Real-Time Streaming**: Server-Sent Events (SSE) for instant answer updates and responsive user experience\n- **🌍 Multilingual**: Supports English, Japanese, Chinese (Simplified/Traditional), German, Spanish, and French\n\n## System Requirements\n\n- **Docker**: 24+ with Docker Compose v2+\n- **Memory**: 6-8GB RAM recommended (includes OpenSearch, Fess, and Ollama)\n- **CPU**: x86_64 (arm64 supported, depending on model compatibility)\n- **GPU**: NVIDIA GPU recommended for faster responses (CPU-only mode available but slower)\n\n\u003e **Note**: Intaste uses Ollama with the `gpt-oss` model by default. GPU acceleration significantly improves response times, but the system works on CPU-only machines with increased latency.\n\n## Quick Start (5 Minutes)\n\n### 1. Clone and Setup\n\n```bash\n# Clone repository\ngit clone https://github.com/codelibs/intaste.git\ncd intaste\n\n# Setup environment variables\ncp .env.example .env\nsed -i.bak \\\n  -e \"s/INTASTE_API_TOKEN=.*/INTASTE_API_TOKEN=$(openssl rand -hex 24)/\" \\\n  -e \"s/INTASTE_UID=.*/INTASTE_UID=$(id -u)/\" \\\n  -e \"s/INTASTE_GID=.*/INTASTE_GID=$(id -g)/\" \\\n  .env\n\n# Initialize data directories (Linux only, requires sudo)\nsudo mkdir -p data/{opensearch,dictionary,ollama}\nsudo chown -R $(id -u):$(id -g) data/\n# Note: macOS/Windows users can skip this step\n```\n\n### 2. Start Services\n\n```bash\n# Start all services\ndocker compose up -d --build\n\n# Pull LLM model (first time only)\ndocker compose exec ollama ollama pull gpt-oss\n\n# Check health\ncurl -sS http://localhost:8000/api/v1/health \u0026\u0026 echo \" - API OK\"\ncurl -sS http://localhost:3000 \u003e /dev/null \u0026\u0026 echo \"UI OK\"\n```\n\n\u003e **First Startup**: OpenSearch and Fess initialization may take 3-5 minutes. Wait until health checks return successfully.\n\n### 3. Access Intaste\n\nOpen your browser and navigate to:\n\n```\nhttp://localhost:3000\n```\n\n## Your First Search\n\nBefore you can search with Intaste, you need to configure Fess to crawl and index content.\n\n### 1. Access Fess Admin Panel\n\nNavigate to Fess:\n\n```\nhttp://localhost:8080/admin\n```\n\n**Default credentials**: `admin` / `admin`\n\n### 2. Create a Crawler Configuration\n\n1. Go to **Crawler \u003e Web Crawler**\n2. Click **Create New**\n3. Configure the crawler:\n   - **Name**: Give your crawler a descriptive name (e.g., \"Company Documentation\")\n   - **URLs**: Enter the website URL you want to crawl (e.g., `https://example.com/docs/`)\n   - **Max Access Count**: Set crawl depth limit (e.g., `1000`)\n   - **Depth**: Set how many levels deep to crawl (e.g., `3`)\n4. Click **Create**\n\n### 3. Start Crawling\n\n1. Go to **System \u003e Scheduler**\n2. Find the **Default Crawler** job\n3. Click **Start Now**\n4. Monitor crawl progress in **System \u003e Crawling Info**\n\n\u003e **Tip**: Start with a small website (10-100 pages) for testing. Large crawls can take hours.\n\n### 4. Perform Your First Search\n\n1. Open Intaste at `http://localhost:3000`\n2. Enter a natural language question related to your crawled content (e.g., \"What are the system requirements?\")\n3. Wait for the AI-powered answer with citations like `[1][2]`\n4. Click citation numbers to view source evidence in the sidebar\n5. Try suggested follow-up questions to explore further\n\n\u003e **Note**: If no results appear, ensure crawling has completed and indexed documents are visible in Fess search (`http://localhost:8080/search`).\n\n## Using Intaste\n\n### Search Interface\n\n- **Query Input**: Enter natural language questions or keywords\n- **Answer Display**: View AI-generated answers with citation markers (`[1]`, `[2]`, etc.)\n- **Evidence Panel**: Right sidebar shows source documents with relevance scores\n- **Follow-ups**: Suggested questions appear below the answer for conversational exploration\n\n### Language Selection\n\nIntaste automatically responds in your selected language. Use the language selector in the top-right corner to switch between:\n\n- English (en)\n- Japanese (ja)\n- Chinese Simplified (zh-CN)\n- Chinese Traditional (zh-TW)\n- German (de)\n- Spanish (es)\n- French (fr)\n\n### Understanding Citations\n\nCitations link answers to source evidence:\n\n- `[1][2]`: Answer is supported by documents 1 and 2\n- Click numbers to view source snippets in the sidebar\n- Click **\"Open in Fess\"** to view the full original document\n\n## Configuration\n\n### Essential Environment Variables\n\nEdit `.env` to customize Intaste:\n\n| Variable | Default | Description |\n|---|---|---|\n| `INTASTE_API_TOKEN` | *(required)* | Authentication token for UI↔API communication |\n| `INTASTE_DEFAULT_MODEL` | `gpt-oss` | Default Ollama model for LLM operations |\n| `INTASTE_UID` / `INTASTE_GID` | `1000` | Docker user/group IDs for file permissions |\n| `REQ_TIMEOUT_MS` | `180000` | Total request timeout (3 minutes) |\n\n\u003e **Security**: Always set `INTASTE_API_TOKEN` to a secure random value. Use `openssl rand -hex 24` to generate one.\n\n### GPU Support\n\nIf you have an NVIDIA GPU:\n\n1. Install [NVIDIA Container Toolkit](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html)\n2. Start services with GPU support:\n   ```bash\n   docker compose -f compose.yaml -f compose.gpu.yaml up -d\n   ```\n3. Verify GPU detection:\n   ```bash\n   docker compose exec ollama nvidia-smi\n   ```\n\n## Troubleshooting\n\n| Issue | Solution |\n|---|---|\n| **Permission denied on `data/` directory** | Run: `sudo chown -R $(id -u):$(id -g) data/` |\n| **UI shows \"Connection failed\"** | Check API health: `docker compose logs intaste-api` |\n| **Search returns no results** | Verify Fess crawling completed: visit `http://localhost:8080/admin` |\n| **LLM timeouts or 503 errors** | Ensure `ollama pull gpt-oss` completed. Check: `docker compose logs ollama` |\n| **Slow responses on CPU** | This is expected without GPU. Consider using a lighter model or adding GPU support |\n| **OpenSearch fails to start** | Increase Docker memory limit to 8GB or more in Docker Desktop settings |\n\n## Next Steps\n\n### For Developers\n\nSee [DEVELOPMENT.md](DEVELOPMENT.md) for:\n- Development environment setup with hot reload\n- Architecture overview and coding standards\n- Testing guide and CI/CD workflows\n- Contributing guidelines and PR process\n\n### Full Documentation\n\n- [TESTING.md](TESTING.md) - Comprehensive testing guide\n\n## Community\n\n- **Issues**: [GitHub Issues](https://github.com/codelibs/intaste/issues) for bugs and feature requests\n- **Contributions**: We welcome contributions! See [DEVELOPMENT.md](DEVELOPMENT.md) to get started\n\n## License\n\n```\nApache License 2.0\nCopyright (c) 2025 CodeLibs Project\n```\n\nSee [LICENSE](LICENSE) for full details.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodelibs%2Fintaste","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcodelibs%2Fintaste","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodelibs%2Fintaste/lists"}