The project uses asyncio semaphore for controlling Ollama concurrency in local mode. The query can be answered by explaining that asyncio semaphore is used to manage the number of concurrent processes for tree-sitter parsing and LLM summarization during the scan loop, with a Semaphore(4) for tree-sitter parsing and Semaphore(2) for LLM summarization in local mode. Sources: config.py:62, config.py:53, main.py:1827, main.py:1555