翻訳待ち:Show HN: Scout – a self-hosted Discord AI memory bot
AI サービスが一時的に利用できないため、復旧後に翻訳を補完します。ソース概要:Notifications You must be signed in to change notification settings Fork 0 Star 1 BranchesTags Open more actions menu Folders and files NameName Last commit message Last commit date Latest commit History 1 Commit 1 Comm…
AI サービスが一時的に利用できないため、復旧後に翻訳を補完します。
Notifications You must be signed in to change notification settings Fork 0 Star 1 BranchesTags Open more actions menu Folders and files NameName Last commit message Last commit date Latest commit History 1 Commit 1 Commit .github .github docs docs scripts scripts sidecar sidecar src/scout src/scout tests tests .gitignore .gitignore AGENTS.md AGENTS.md CODE_OF_CONDUCT.md CODE_OF_CONDUCT.md CONTRIBUTING.md CONTRIBUTING.md LICENSE LICENSE README.md README.md SECURITY.md SECURITY.md THIRD_PARTY_NOTICES.md THIRD_PARTY_NOTICES.md pyproject.toml pyproject.toml scout-discord-profile.png scout-discord-profile.png scout.spec scout.spec Repository files navigation Private, local meeting memory for Discord voice. Scout is a self-hosted Discord bot that joins an authorized voice channel, keeps speakers separated by Discord identity, transcribes English speech locally, and turns the conversation into durable, searchable meeting memory. Raw audio and verbatim transcripts are deleted after each checkpoint is safely compacted. No audio, transcript, summary, prompt, embedding, or conversation metadata is sent to a hosted AI service. Discord still carries normal bot messages and voice traffic; all AI inference and retained conversation data stay on the Windows computer running Scout. Important Scout is pre-1.0 software. The local application and automated tests are implemented, but every deployment must pass a real Discord/DAVE voice acceptance test in the target server before it is used for meetings. Why Scout Local by design. Whisper, Qwen, retrieval, storage, and question answering run on the owner's machine with no AI API key. Faithful attribution. Discord's per-user voice streams preserve speaker IDs; Scout does not guess speakers with diarization. Bounded retention. Two-minute checkpoints retain structured memory, not a hidden permanent transcript. Retention defaults to 30 days. Grounded answers. Answers come only from the selected session's retained memory and include approximate time ranges. Missing details stay missing. Inspectable operation. A loopback-only dashboard shows session, queue, model, GPU, disk, and retention health without publishing conversation content. Failure-safe cleanup. Temporary inputs are removed only after the replacement compact memory is validated and committed. How it fits together flowchart LR D["Discord voice"] -->|"per-user Opus"| N["Node.js sidecar"] N -->|"attributed PCM over authenticated loopback"| P["Python coordinator"] P --> W["faster-whisper"] W --> C["Qwen3 via loopback Ollama"] C --> S["SQLite compact memory"] S --> A["Grounded answers and summaries"] P --> U["Owner dashboard on 127.0.0.1"] Loading The Node.js adapter owns the Discord gateway, application commands, DAVE voice receive, and PCM decoding. Python owns lifecycle, transcription, compaction, retrieval, storage, retention, and the administrative dashboard. See the architecture decisions for the reasoning behind these boundaries. Requirements Scout currently targets one owner-operated Windows 11 machine with: Python 3.12 (the pinned release does not support Python 3.13); an NVIDIA GPU suitable for large-v3-turbo with CUDA/FP16 (the reference system uses an RTX 4080 SUPER with 16 GB VRAM); Ollama for Windows, bound to loopback; a Discord application and bot token; enough local storage for models, temporary work, and retained summaries. The checked-in helper downloads a pinned portable Node.js 24 runtime for the Discord sidecar. A machine-wide Node.js installation is not required. Quick start git clone cd Scout py -3.12 -m venv .venv .venv\Scripts\Activate.ps1 python -m pip install --upgrade pip python -m pip install -e ".[all]" powershell -ExecutionPolicy Bypass -File scripts\get_node_runtime.ps1 sidecar\.tools\node-v24.15.0-win-x64\node.exe sidecar\.tools\node-v24.15.0-win-x64\node_modules\npm\bin\npm-cli.js --prefix sidecar ci ollama pull qwen3:8b scout warm-models scout doctor scout run Open http://127.0.0.1:8765. The first visit creates the local dashboard password. Then follow the Discord bot registration guide to set SCOUT_DISCORD_TOKEN and configure the owner, guild, voice channel, and output channel. Full native setup, packaging, and benchmark instructions are in the Windows guide. Scout can start while a prerequisite is missing, but it will report the problem and will not accept a recording until capture and inference are healthy. Discord commands Command Purpose /scout start (join) Join the caller's voice channel and start a session /scout stop (leave) Finalize the active session early /scout status Show content-free session and pipeline health /scout summary [session] Build an overall summary from compact memories /scout ask [session] [scope] Ask a grounded question /scout sessions List sessions available in the current guild /scout export [session] Export retained summary and metadata locally /scout correct [session] Add an audited correction Privacy and consent Scout visibly joins the voice channel and posts a local-transcription notice before recording. It uses notice and implied consent; participants who do not want to be included can leave. Recording laws differ by location, so the operator must confirm that this model is lawful wherever Scout is used. Data Location Lifetime Discord voice and messages Discord transport Governed by Discord plus live session needs Raw audio and verbatim transcript Local temporary work area Until a checkpoint is durably committed Compact memory and presence events Local SQLite database 30 days by default, configurable Models Local disk Until the owner removes them Content-free operational logs Local disk Local retention policy Runtime data defaults to %LOCALAPPDATA%\Scout. The dashboard binds only to loopback, requires a password, and protects state-changing actions with CSRF tokens. Guild IDs remain part of every session and retrieval boundary. Development Unit tests need neither Discord nor a GPU: python -m pip install -e ".[dev,audit]" python -m pytest python -m ruff check . python -m mypy python -m pip_audit --local --progress-spinner off powershell -ExecutionPolicy Bypass -File scripts\check_public_release.ps1 Node sidecar tests run with the downloaded portable runtime: sidecar\.tools\node-v24.15.0-win-x64\node.exe sidecar\.tools\node-v24.15.0-win-x64\node_modules\npm\bin\npm-cli.js --prefix sidecar test The performance release gate uses four synthetic speakers and a three-hour-class session; see Windows setup. Real conversations and generated fixtures must never be committed. Contributions are welcome. Start with CONTRIBUTING.md, read the project constraints in AGENTS.md, follow the Code of Conduct, and report vulnerabilities according to SECURITY.md. License Scout's source code and project artwork are available under the MIT License. Third-party packages and model artifacts keep their own licenses; see THIRD_PARTY_NOTICES.md. Discord, Ollama, Qwen, Whisper, and the referenced product names are trademarks of their respective owners. MIT license Code of conduct Code of conduct Contributing Contributing Security policy Security policy Activity Stars 1 star Watchers 0 watching Forks 0 forks Report repository