Correct the Python minimum to 3.10, list integrations, test, and the compose file in the project structure, drop every em-dash, label the SDK badges as mirror versions, and record this audit's server, migration, and SDK changes in the changelog. Claude-Session: https://claude.ai/code/session_01Agoc9bRVE9KL7mmWtey9Vq
6.5 KiB
Contributing to Elydora
Thank you for your interest in contributing to Elydora, the open-source responsibility layer for AI agents. This document explains how to get a development environment running, our code style expectations, and how to submit changes.
Table of Contents
- Code of Conduct
- Development Setup
- Code Style
- Pull Request Process
- Adding a New SDK Language
- Reporting Issues
Code of Conduct
This project follows the Contributor Covenant Code of Conduct. By participating you agree to abide by its terms. Report unacceptable behavior to the maintainers.
Development Setup
Prerequisites
| Tool | Minimum version |
|---|---|
| Docker | 24+ |
| Docker Compose | v2.20+ |
| Node.js | 18+ (for Console / Node SDK) |
| Python | 3.10+ (for Python SDK) |
| Go | 1.21+ (for Go SDK) |
Running the API Server
-
Clone the repository
git clone https://github.com/Elydora-Infrastructure/Elydora-Open-Source.git cd Elydora-Open-Source -
Configure environment variables
cp .env.example .env # Edit .env; required variables are documented inside the file -
Generate cryptographic keys
./scripts/generate-keys.sh -
Start all infrastructure services
docker compose up -dThis starts the API server, PostgreSQL, MinIO (object storage), and Redis.
-
Verify the server is healthy
curl http://localhost:8787/v1/health
Running the Console
The web console is a Next.js application located in packages/console/.
cd packages/console
npm install
npm run dev
The console is served at http://localhost:3000.
SDK Development
Node.js SDK (sdks/node/)
cd sdks/node
npm install
npm run build # Compile TypeScript to dist/
To run the CLI locally without installing:
node dist/cli.js --help
Python SDK (sdks/python/)
cd sdks/python
python -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"
To run the CLI locally:
elydora --help
Run type checks and tests:
mypy elydora/
pytest
Go SDK (sdks/go/)
cd sdks/go
go build ./...
go test ./...
To build the CLI binary:
go build -o elydora ./cmd/elydora
./elydora --help
Code Style
General
- Keep changes focused: one logical change per pull request.
- Write clear commit messages in the imperative mood (
Add X,Fix Y,Remove Z). - Avoid introducing new dependencies without discussion.
- Do not add placeholder data, mock data, or test fixtures to production code paths.
TypeScript (Node SDK)
- Use strict TypeScript (
"strict": truein tsconfig). - Prefer
readonlyproperties on interfaces. - Use explicit return types on exported functions and methods.
- No
anytypes; useunknownand narrow explicitly.
Python SDK
- Target Python 3.10+ compatibility.
- Use type hints everywhere (checked with
mypy). - Follow PEP 8 with a line length of 100.
- Prefer keyword-only arguments for optional parameters.
Go SDK
- Follow standard Go formatting (
gofmt). - Return
(T, error); never panic in library code. - Keep the public API minimal; unexported helpers start with a lowercase letter.
- Document all exported symbols with Go doc comments.
API Server
- All route handlers must validate input and return structured
{ error: { code, message, request_id } }responses on failure. - All operations must be authorized via the RBAC middleware before handler logic runs.
- Cryptographic operations (signing, verification) must use the canonical JCS representation.
Pull Request Process
-
Fork the repository and create a feature branch from
main.git checkout -b feat/your-feature-name -
Make your changes, keeping commits atomic and well-described.
-
Test your changes against a local Docker Compose environment.
-
Open a pull request against the
mainbranch. Fill in the PR template, including:- A clear description of what changed and why.
- Steps to test the change locally.
- References to any related issues.
-
CI checks run automatically. All checks must pass before a PR can be merged.
-
A maintainer will review your PR. Address any requested changes in new commits (do not force-push to an open PR).
-
Once approved and checks pass, a maintainer will merge using squash-merge.
Adding a New SDK Language
Elydora welcomes official and community SDKs. A conformant SDK must implement the following:
Required capabilities
| Capability | Details |
|---|---|
| EOR construction | Build a signed Elydora Operation Record per the protocol spec |
| Ed25519 signing | Sign the JCS-canonicalized EOR (excluding signature field) |
| Chain hashing | SHA-256 of (prev_chain_hash || payload_hash || operation_id || issued_at) |
| Operation submission | POST /v1/operations |
| Configurable base URL | Must default to https://api.elydora.com but accept any URL |
| Retry logic | Retry on 429 and 5xx with exponential backoff |
| Structured errors | Surface code, message, request_id from error responses |
Recommended capabilities
- Agent registration and management
- Audit query
- Epoch retrieval
- Export creation and download
- Auth helpers (register, login, token issuance)
Submission
- Place your SDK under
sdks/<language>/in the monorepo. - Include a
README.mdwith installation, quickstart, and API reference. - Include a conformance test that exercises at minimum: key generation, EOR construction, signing, and verification against a local server.
- Open a pull request with the
sdklabel.
Reporting Issues
- Use GitHub Issues for bug reports and feature requests.
- For security vulnerabilities, do not open a public issue. Email the maintainers directly so the issue can be addressed before public disclosure.
- Include as much context as possible: Elydora version, SDK version, OS, steps to reproduce, and expected vs. actual behavior.