Contributing to Telmoni
How to contribute to the open-source Telmoni platform: setting up, the rules the code follows, the gate before a pull request, and how commits are written.
Telmoni's open-source core is telmoni/telmoni on GitHub, the four SDKs under sdk/ with it; these pages are telmoni/docs, the CLI is telmoni/telmoni-cli, and the agent skills telmoni/skills. Thanks for helping build it. Everyone taking part follows the Code of Conduct, and the AI policy says how AI tools fit in.
Four repositories
telmoni/telmoni, the platform and the four SDKs (sdk/). Developing it takes two commands;ARCHITECTURE.mdexplains how it is built on one page: the place to read before changing anything structural.make ciis the gate.telmoni/docs, these pages, which the platform's console serves at/docs. The docs says how a page is wired, and every claim on one is checked against the code first.make checkandtyposare the gate, with the platform checked out beside it.telmoni/telmoni-cli, the CLI. Developing it; itsARCHITECTURE.mdexplains how it is built on one page.cargo xtask ciis the gate.telmoni/skills, the agent skills. Developing them; itsAGENTS.mdholds the rules a skill is held to, and how to test one.make checkis the gate.
Before you start
Open an issue first for a new feature, a schema change or anything architectural, so the shape is agreed before the work. A bug fix or a small improvement can go straight to a pull request.
How the platform's code is shaped
- Rust owns the rules. Business logic, queries, authorization, tenancy and the audit log live in
crates/; the console inweb/is a thin proxy and holds none of them. - Never log a secret or personal data, at any level. Secrets are held in
Redactedand read on purpose. - Nothing has shipped, so there are no migration paths: a schema change edits the module's existing migration, and
make db-resetrebuilds the local database. After a change to the wire contract,make contractregenerates it.
Before you push
Run the repository's gate, which is what its CI runs: make ci in the platform (formatting, clippy, rustdoc, the Rust tests against a local Postgres and ClickHouse, the console's typecheck, lint, dead-code check, tests and build, the SDK suites, and the dependency and spelling checks), make check and typos in the docs, cargo xtask ci in the CLI, and make check in the skills, CI linting the CLI's and the skills' workflows with actionlint beside them. A pull request is reviewed once its gate passes.
Commits and pull requests
- Keep a pull request to one change.
- Commits follow Conventional Commits (
feat:,fix:,docs:,refactor:,chore:). - Every commit is signed off by its author:
git commit -saddsSigned-off-by: Your Name <you@example.com>from git'suser.nameanduser.email, certifying the Developer Certificate of Origin, that you may submit the change under the project's Apache-2.0 licence, as its section 5 provides. A pull request with a commit not signed off is sent back to be signed, and the merge commit is signed off too: a maintainer merges from a clone withgit merge --no-ff --signoffand pushes, never from GitHub's merge button, whose commit carries none. - Only people are commit authors; the AI policy has the rest.
Security
A suspected vulnerability is never a public issue: see reporting a vulnerability, which is the security policy of every Telmoni repository.
Security FAQ
Short answers on the hosted service's security: encryption in transit and at rest, tenant isolation, sign-in and sessions, API keys and rate limits, what is logged, the audit log, backups, certifications, availability, and how to report a vulnerability.
Developing
Running and checking each Telmoni repository on your machine: the platform with the SDKs in it, these docs, the CLI, and the agent skills.