Thanks for your interest in contributing! Here's how to get started.
Windows:
- Visual Studio 2022 with C++20 support
- CMake 3.20+
- Git
Linux:
- GCC 12+ or Clang 15+
- CMake 3.20+
- OpenGL development packages
# Clone with submodules
git clone --recursive https://github.com/super2xl/orpheus.git
cd orpheus
# Build
mkdir build && cd build
cmake ..
cmake --build . --config Release- Use
.clang-formatfor consistent formatting - Member variables use trailing underscore:
enabled_,session_id_ - Use
LOG_*macros for logging, notstd::cout/std::cerr - Prefer
std::string_viewfor read-only string parameters - Use
[[nodiscard]]for functions with important return values
namespace orpheus {
class MyClass {
public:
void DoSomething(); // PascalCase for public methods
int GetValue() const;
private:
void internalHelper(); // camelCase for private methods
int value_; // Trailing underscore for members
static constexpr int kMaxSize = 100; // k prefix for constants
};
} // namespace orpheusUse conventional commits format:
feat: add new MCP endpoint for memory regions
fix: correct pattern scanning offset calculation
docs: update README with new build instructions
refactor: extract common validation logic
- Fork the repository
- Create a feature branch:
git checkout -b feature/my-feature - Make your changes
- Run tests if available
- Submit a PR with clear description of changes
src/
├── core/ # DMA interface, runtime management
├── analysis/ # Disassembler, pattern scanner, RTTI
├── decompiler/ # Ghidra integration
├── emulation/ # Unicorn CPU emulator
├── dumper/ # CS2 schema dumper
├── mcp/ # MCP server and handlers
├── ui/ # ImGui application
└── utils/ # Logging, bookmarks, telemetry
When adding new MCP endpoints:
- Add handler function to appropriate
mcp_handlers_*.cppfile - Register in
mcp_server.cpp - Add input validation for all parameters
- Use consistent JSON response format
- Document the endpoint in README
Open an issue or reach out on the project discussions.