./repos/ directory at the project root. This guide covers how to prepare single repositories, monorepos, and multi-repository applications.
Understanding the ./repos/ Directory
TheREPO flag in Shannon commands refers to a folder name inside ./repos/, not an absolute path. Shannon mounts this directory into its Docker containers to perform source code analysis.
Single Repository Setup
For standard single-repository applications, clone or copy your repository directly into./repos/:
Using Symlinks
If you already have the repository cloned elsewhere on your system, you can create a symlink instead of duplicating it:Symlinks are particularly useful during development when you want to test Shannon against a repository you’re actively working on without creating duplicate copies.
Monorepo Setup
For monorepos containing multiple services or applications in a single repository:Multi-Repository Applications
For applications split across multiple repositories (e.g., separate frontend, backend, and API repositories):Common Issues and Solutions
Error: Repository not found
Error: Repository not found
This error occurs when Shannon cannot find the repository in
./repos/.Solution: The REPO parameter must be a folder name inside ./repos/, not an absolute path. Always clone or symlink your repository into ./repos/ first:How do I test a specific branch or commit?
How do I test a specific branch or commit?
Simply checkout the desired branch or commit before running Shannon:
Can I use a shallow clone to save space?
Can I use a shallow clone to save space?
Yes, Shannon only needs the working directory and doesn’t require full git history:This clones only the latest commit, significantly reducing disk space for large repositories.
What if my repository has submodules?
What if my repository has submodules?
Clone with submodules initialized:Shannon’s agents will analyze the complete codebase including submodule contents.
Repository Permissions
Shannon runs inside Docker containers with access to the./repos/ directory. On Linux systems, you may encounter permission issues if your Docker setup requires elevated privileges.
Linux users: If you see permission errors, ensure your user has access to the Docker socket, or run Shannon commands with sudo:
docker group (requires logout/login):
Next Steps
Once your repository is prepared:- Configure authentication if your application requires login
- Start your first pentest
- Learn to interpret the results
