Skip to content
  • Help
  • Glossary
  • Tickets
  • EcoSystem Status
Moko ConsultingMoko Consulting
  • Home
  • News
  • Services
  • Products
  • Jobs
You are here:
  1. Home
  2. Support
  3. Software
  4. MokoGIT
  5. Guides

Guides

MokoGIT: License Management (Commercial Licensing)

Details
Category: Guides
  • Applicable Software: MokoGIT
  • Min Version Number: 02.00.00
  • Max Version Number: Not Applicable

MokoGIT includes a built-in commercial license management system for organizations that sell extensions or applications (Joomla, Dolibarr, Electron apps, and more). It handles license-key generation, validation, update-feed gating, domain enforcement, and payment-system integration — so you can license and deliver paid software straight from your repositories.

Two levels

  • Organization — packages and keys shared across every repo in the org (/{org}/-/licenses).
  • Repository — the same, scoped to one repo, plus per-repo update-feed URLs (/{owner}/{repo}/licenses).

License packages

A package defines a subscription tier (for example “Pro Annual” or “Basic Monthly”):

  • Duration — key validity in days (0 = lifetime).
  • Max sites — maximum unique domains a key may activate (0 = unlimited).
  • Channels — which update streams the package grants access to.
  • Active — whether the package is currently sold.

Every org/repo also gets a protected Master (Internal) package with an internal key — unlimited access to all channels; it can be revoked but not edited or deleted.

License keys

  • Keys look like MOKO-XXXX-XXXX-XXXX-XXXX and are hashed (SHA-256) before storage — the full key is shown once at creation, so store it securely.
  • Each key can carry a licensee name/email, a domain restriction, a max-sites override, and a custom expiry date.

Gating downloads

License keys tie into the Update Server: set a repository's Feed Visibility to Require license key and consumers must present a valid key to list versions and download updates. Domain and channel access are checked at validation time.

Selling & automation (API)

  • Purchase webhook — POST /api/v1/repos/{owner}/{repo}/license-keys/purchase creates a key from a payment event (Stripe, PayPal, etc.). A payment_ref makes it idempotent, so a retried webhook returns the existing key instead of creating a duplicate.
  • Validation — the public POST .../license-keys/validate endpoint checks a key + domain for client-side license checks.
  • Admin endpoints (token + repo admin) manage packages and keys — list, create, edit, delete, and view usage logs.

Where to manage it

  • Repository: {owner}/{repo} → Licenses.
  • Organization: {org} → Licenses (shared across all repos in the org).

Get help

Open a support ticket or call (931) 820-0265.

Last Updated: October 06, 2026
Hits: 55
  • mokogit

MokoGIT: Custom Issue Statuses, Priorities & Types

Details
Category: Guides
  • Applicable Software: MokoGIT
  • Min Version Number: 02.00.00
  • Max Version Number: Not Applicable

MokoGIT extends the built-in issue tracker with organization-level custom issue metadata — Statuses, Priorities, and Types that every repository in the org shares. Unlike plain labels, these are first-class fields with their own definitions, colors, defaults, and (optionally) required-on-create enforcement.

Custom Statuses

  • Each org defines its own issue statuses (for example In Progress, Blocked, Pending: Review, Resolved), each with a color and a closes-issue flag — applying a closes-issue status closes the issue.
  • Presets seed a standard status set into an org in one step, and a protected baseline keeps core statuses from being removed.

Priorities

  • Org-defined priorities (for example Critical / High / Medium / Low), each with a color; one is marked the default applied to new issues.

Types

  • Org-defined issue types (for example Bug, Feature, Enhancement, Task, Documentation, Security, Infrastructure), each with a color; one is the default.

Required on create

An organization can require that every new issue carry a Status, Priority, and Type. When enforced, creating an issue without them is rejected — so issues are triaged consistently across the org's repositories from the moment they're opened.

Where to set it

  • Org-wide: organization Settings → Issue Statuses / Priorities / Types. The same definitions are available over the REST API (and the MokoGIT MCP server) for automation.
  • Per issue: choose the Status, Priority, and Type when creating or editing an issue.

Get help

Open a support ticket or call (931) 820-0265.

Last Updated: October 06, 2026
Hits: 30
  • mokogit

MokoGIT: Update Feed Formats

Details
Category: Guides
  • Applicable Software: MokoGIT
  • Min Version Number: 02.13.00
  • Max Version Number: Not Applicable

Overview

MokoGIT's built-in update server turns a repository's releases into a live update feed. With selectable feed formats, the feed format is chosen per repository, so the update server can speak the right protocol for each kind of software — a Joomla-style updates.xml for extensions, or an electron-updater latest.yml for desktop apps. See also MokoGIT: Releases & the Update Server.

Choosing a format

Each repository has an Update Feed Format setting (repository Settings → Update Server, or the update_feed_format field on the repo metadata REST API):

FormatServesFor
offnothing (disabled)—
joomla-xmlJoomla updates.xml (one signed package per stream)Joomla extensions; recipe & manifest catalogs
electron-ymlelectron-updater latest.yml / latest-linux.yml / latest-mac.ymlElectron desktop apps (self-update)

How the default is chosen

When the setting is left unset, MokoGIT derives the format from the repository's platform (an electron repo defaults to electron-yml; a joomla repo to joomla-xml; everything else is off). Setting the field explicitly always overrides the platform default.

Endpoints

  • Joomla: .../{owner}/{repo}/updates.xml
  • Electron: .../{owner}/{repo}/updates/electron/{channel}/latest.yml

Every feed is channel-aware (dev / rc / stable) and signed, so a client only ever sees updates for the channel it follows.

Roadmap

The generator is designed so new formats are cheap to add. Planned generators give every platform a feed its own tooling understands: a Composer packages.json repository (composer require), a Go module proxy (go get), a private npm registry (npm install), a Sparkle appcast, and AppImage .zsync delta updates.

Get help

Open a support ticket or call (931) 820-0265.

Last Updated: October 06, 2026
Hits: 36
  • mokogit
  • ci/cd

MokoGIT: Cascade Merge Rules

Details
Category: Guides
  • Applicable Software: MokoGIT
  • Min Version Number: 02.09.00
  • Max Version Number: Not Applicable

What cascade merge rules do

When a fix lands on a higher channel (for example a hotfix merged into stable), lower channels like dev need that change too, or they will silently drift behind. Cascade merge rules keep your branches in sync automatically by propagating merges from a source branch into a target branch — typically back down the ladder, such as stable → dev.

Native, not a workflow

Cascade is a native MokoGIT feature handled by the forge itself. It replaced the old cascade.yml / cascade-dev.yml Actions workflow that used to run on a runner. Because it is built in, cascading:

  • needs no runner, no workflow file in your repository, and no CI minutes;
  • does not depend on Sync Profiles distributing a workflow to keep it working;
  • is configured as data (rules) on the repository rather than as YAML you maintain.

How a rule is defined

Each cascade rule maps a source branch to a target branch and has:

  • Enabled — whether the rule is active.
  • Mode — how conflicts are handled: notify (open a notification / let a human resolve) or auto_resolve (attempt to resolve automatically).
  • Auto-merge — whether the cascaded merge is completed automatically when it applies cleanly.

A repository also has a cascade default mode (for example notify) used when a rule does not override it. A typical channel-named repository runs a single rule: stable → dev, so hotfixes shipped on stable flow back into dev. Repositories on the conventional model use the equivalent main → dev rule.

How it differs from the old cascade.yml

Old cascade.yml workflowNative cascade rules
Where it runsOn a runner, as an Actions jobInside the forge, no runner
ConfigurationA YAML file synced into each repoData rules on the repository
UpkeepKept current by Sync ProfilesNothing to sync or maintain
Conflict handlingJob succeeds/failsnotify or auto_resolve per rule

The cascade.yml workflow has been retired across the fleet in favor of these native rules.

Related

See MokoGIT: Branch Model & Release Channels for the branch ladder cascade keeps in sync, and MokoGIT: CI/CD & Release Pipeline for how promotion up the ladder works.

Get help

Open a support ticket or call (931) 820-0265.

Last Updated: October 06, 2026
Hits: 39
  • mokogit
  • ci/cd

MokoGIT: CI/CD & Release Pipeline

Details
Category: Guides
  • Applicable Software: MokoGIT
  • Min Version Number: 02.09.00
  • Max Version Number: Not Applicable

Overview

MokoGIT's own repositories share a common CI/CD pipeline, distributed automatically to every repository by Sync Profiles. Rather than hand-maintaining workflows per repo, each repository receives the same small set of platform workflows that build, test, deploy, and release along the dev → rc → stable ladder. You never have to wire this up yourself.

The core workflows

deploy.yml — one tier-selecting deploy

A single deploy.yml handles deployment for every environment and picks the right tier from the branch or event that triggered it:

  • push to dev → build and deploy to the development environment.
  • pull request into stable or rc → build and deploy to the release-candidate environment for testing.
  • push to stable → build and deploy to production.

Because one workflow selects the tier, there are no separate deploy-dev, deploy-rc, and deploy-prod files to keep in sync — the branch is the switch.

auto-release.yml — universal stable releases

A universal auto-release.yml cuts the stable release when content lands on the production branch: it tags the version, publishes the release with notes, and attaches build artifacts. Downstream, the update server can advertise that release to installed software (see MokoGIT: Releases & the Update Server).

pre-release.yml — the development channel

A pre-release.yml publishes development-channel builds so pre-stable versions are available for testing without being presented as certified stable releases.

Version bumping

Version numbers advance automatically on every repository — including ones with releases turned off — while the actual publishing of a release is gated on whether releases are enabled. This means templates and internal repos keep a correct, advancing version without ever cutting a public release. The canonical version lives in the repository's Makefile and is stamped into every manifest in a single commit.

Heavy suite vs. light per-PR checks

To keep everyday pull requests fast while still guarding release branches, the pipeline runs two levels of testing:

  • Light per-PR CI — runs on every pull request: quick build, lint, and a fast subset of checks so contributors get feedback in minutes.
  • Gated heavy suite — the full, slower test suite (for example, the complete Go integration suite) runs on the release branches (rc / stable) rather than on every PR. This gates promotion up the ladder without slowing down day-to-day work.

How it ties together

Feature and fix branches open PRs into dev, where light CI runs. Content is promoted dev → rc (heavy suite runs, RC deploy for testing), then rc → stable, where auto-release.yml cuts the stable release and deploy.yml ships production. Development-channel builds come from pre-release.yml along the way.

Managed runners

Moko Consulting operates and scales the Gitea Actions runner fleet that executes these workflows. If you need custom runners or a specialized build environment, contact our support team.

The fleet includes a dedicated priority runner for release-critical work. Release workflows target runners conditionally: by default they use the shared runner pool, but a repository can opt into the priority runner so its releases jump ahead of the shared queue — useful for the tools that other releases depend on.

Stuck-job detection. Three background janitors keep the queue healthy: a running job whose runner has gone silent is stopped (a “zombie”), a job that never finishes is stopped after a few hours, and a job that no runner ever picks up is cancelled (“abandoned”).

Cross-repo Actions queue

A single pane shows the Actions queue — waiting, running, and blocked jobs — across many repositories at once, so a backed-up runner or a stuck deploy is obvious at a glance. Site administrators see the whole instance (Site Administration → Actions → Queue); organization members see the queue scoped to their organization's repositories. You can filter by status, by trigger event, and by free-text search across repository, workflow, and job name. Jobs that have crossed the stuck thresholds are highlighted at the top of the list — surfacing a pileup before the background janitors step in.

Related

See MokoGIT: Branch Model & Release Channels for the branch ladder, CI/CD with Gitea Actions for authoring your own workflows, MokoGIT: Sync Profiles for how these workflows are distributed, and MokoGIT: Releases & the Update Server for the release side.

Get help

Open a support ticket or call (931) 820-0265.

Last Updated: October 06, 2026
Hits: 41
  • mokogit
  • ci/cd
  1. MokoGIT: Branch Model & Release Channels
  2. MokoGIT: Branch Protection & Organization Governance
  3. MokoGIT: Packages & Container Registry
  4. MokoGIT: Releases & the Update Server

🛎️ Prefer white‑glove setup?

Moko Consulting can provision the line, port your number, tune policies, and hand you a zero‑drama system with a one‑page runbook.
Find out More Here or Contact us to find out more!
📝 Open Support Ticket ☎️ Call ‪(931) 820-0265
MokonyxSocial 99 Cross-Posting 82 social media 36 mokogit 33 MokonyxPlatform 33 OAuth 24 MokoNtfy 20 FREE 16
  • Terms of Service
  • Privacy Policy
  • Privacy Information Request
Copyright © 2026 Moko Consulting. All Rights Reserved.
Powered by Mokonyx