Contributing
Zeq is an open-core project. We welcome contributions to every part of the open stack. The non-open parts are labeled clearly in the repo, and PRs that touch them will be declined — it's not personal, those are the bits that keep the lights on.
What's open
- Protocol registry (
app/artifacts/api-server/src/lib/protocols.ts) - All reference applications (
app/artifacts/api-server/public/apps/*) - SDK source — TypeScript (
app/packages/sdk/), MCP (app/packages/zeqsdk-mcp/), Python (app/sdk/python/) - Operator registry (
app/packages/sdk/src/operators.ts) - Documentation (
sdk-docs/source/) - Integration tests (
app/artifacts/api-server/tests/)
What's closed
- API gateway runtime (
app/artifacts/api-server/src/app.ts,src/routes/auth.ts, etc.) — binary-only release. - Key issuance & signing service.
- Compute backend.
- Internal ops tooling (
app/deploy/,app/scripts/internal/). - Hosted HulyaPulse clock.
The repo is structured so the open pieces can be built and run without any closed piece. The closed pieces are replaceable locally — you can self-host the full stack, just with your own keys and your own clock.
Ways to contribute
Add a protocol
Edit app/artifacts/api-server/src/lib/protocols.ts and append a new entry:
{
id: "zeq-your-protocol",
category: "Applied Physics",
description: "One-line description",
formula: "Your_formula_here = ...",
operators: ["KO42", "QM9", "NM23"],
params: {
m_kg: { type: "number", required: true, description: "mass, kg" },
v_mps: { type: "number", required: true, description: "velocity, m/s" },
},
example: {
params: { m_kg: 1, v_mps: 100 },
expected: { /* ... */ },
},
}
Run cd sdk-docs/source && npm run build — the generator will emit a docs page automatically.
Port the SDK to a new language
Highest-impact contribution. See Build → SDKs → Python for what a port looks like. Target interface parity with @zeq-os/sdk:
ZeqClient → thin wrapper over the hosted API
pulse() → local pulse read
unixToZeqond / zeqondToUnix → deterministic math, no network
getOperators / DOMAINS → operator registry (ported from sdk/src/operators.ts)
ZeqMail / ZeqMesh / ZeqDaemon clients → vertical API wrappers
Languages we'd especially like to see: Go, Rust, Java, C#, Ruby, PHP.
Fix an app / build a new one
Apps live in app/artifacts/api-server/public/apps/<app-name>/. Each is a static bundle (HTML + inline JS/CSS). Guidelines:
- One app, one directory.
index.htmlat the root.- No frameworks with runtime builds — ship pre-built assets only.
- Call the SDK via the CDN build (for non-Node apps) or a bundled copy.
- Mark it as open-source: Apache-2.0 header in each source file.
Documentation
This docs site is Docusaurus. Content is in sdk-docs/source/docs/. PRs welcome.
PR workflow
- Fork github.com/hulyasmath/zeq-framework.
- Branch off
main. - Write the change + tests.
- Run
pnpm run build && pnpm testat the repo root. - Open the PR. We review on the HulyaPulse — 1.287 Hz is real, but review cadence is human.
Governance
The framework has a technical custodian (Zeq H — founder) who has final say on merges to main. That's pragmatic: the framework's math has to be consistent, and one person has to own that consistency. Expect:
- Fast iteration on apps and SDK code.
- Slower, more careful review on anything touching operators or the protocol schema.
- No PRs accepted that claim ≤0.1% error without a working KO42 proof.
Code of conduct
Be kind. The framework is a serious mathematical project; criticism is welcome, cruelty is not.