Šķîþ ţö ḿàîñ çöñţéñţ

Ţĥé ļööþ îñ ÇÎ

ÇÎ îš ŵĥéŕé đŕîƒţ îš ḿàđé: éṽéŕý ḿéŕĝé çĥàñĝéš šöüŕçé çöñţéñţ àñđ ļéàṽéš îţš ţŕàñšļàţîöñš, ţéŕḿš, àñđ ṽöîçé çöñƒöŕḿàñçé ƃéĥîñđ. Îţ îš àļšö ţĥé ñàţüŕàļ þļàçé ţö çàţçĥ üþ. Ţĥé kapi ļööþ ŕüñš öñ éṽéŕý çĥàñĝé öŕ öñ à šçĥéđüļé; ŵĥàţ à ḿàçĥîñé çàññöţ đéçîđé þàŕķš îñţö ţĥé ţéàḿ'š ŕéṽîéŵ šéššîöñ öñ ţĥé šéŕṽéŕ; àñđ ţĥé šĥîþ ĝàţé þŕöţéçţš ŕéļéàšéš ŵîţĥöüţ éṽéŕ ƒàîļîñĝ àñ öŕđîñàŕý ƃüîļđ öñ ţàŕĝéţ-ļàñĝüàĝé đŕîƒţ.

Öñ à þŕöĵéçţ çöññéçţéđ ţö à Bowrain šéŕṽéŕ, à ÇÎ ŕüñ öƒ kapi up éẋéçüţéš öñ ţĥé šéŕṽéŕ ṽéñüé: ţĥé ĵöƃ þüšĥéš ţĥé đŕîƒţ, ţĥé šéŕṽéŕ ŕüñš ţĥé ļööþ öñ ţĥé öŕĝàñîžàţîöñ'š ÀÎ ķéýš, šĥàŕéđ çöñţéñţ ḿéḿöŕý, àñđ ţéŕḿš, àñđ ţĥé ŕéšüļţš çöḿé ƃàçķ ţö ţĥé ŵöŕķîñĝ ţŕéé. Ţĥé ŕüññéŕ ĥöļđš à šéŕṽéŕ ţöķéñ àñđ ñö þŕöṽîđéŕ ķéýš.

Ţĥîš þàĝé ḿàþš ţĥé šüŕƒàçéš àñđ ţĥé çöñţŕàçţ ţĥéý šĥàŕé. Ţĥé šţéþ-ƃý-šţéþ ĝéñéŕîç ŵàļķţĥŕöüĝĥš (šçĥéđüļîñĝ, ĝàţîñĝ, çöšţ ŕéþöŕţîñĝ öñ ĜîţĤüƃ àñđ ĜîţĻàƃ) ļîṽé öñ ţĥé kapi šîţé: Ţĥé kapi ļööþ îñ ÇÎ.

Your pipeline produceskapi-action · kapi-components · ghcr imagea merge or a schedule tickkapi up: the loop runs on the servera PR/MR with the run reportYour pipeline gateskapi check --shipa merge request opensthe bound gates runexit 3 blocks the mergeNo pipelineforge connector · Bowrain GitHub Appa push webhook reaches the serverthe server re-ingests and convergesone PR/MR, updated in place

Þŕöđüçé àñđ ĝàţé ƒŕöḿ ýöüŕ öŵñ ÇÎ, öŕ ļéţ ţĥé šéŕṽéŕ đö ƃöţĥ ŵîţĥ ñö þîþéļîñé àţ àļļ.

Ţĥé çöñţŕàçţ

Ţĥŕéé çöḿḿàñđš đîṽîđé ţĥé ŵöŕķ, àñđ ţĥéîŕ éẋîţ çöđéš àŕé ţĥé ŵĥöļé îñţéŕƒàçé à þîþéļîñé ñééđš:

ÇöḿḿàñđŔöļéÉẋîţ ƃéĥàṽîöŕ
kapi statusÖƃšéŕṽé: þéŕ-ļöçàļé çöṽéŕàĝé àñđ ĝàţé šţàñđîñĝÀļŵàýš 0: ƃéĥîñđ îš þéñđîñĝ ŵöŕķ, ñöţ àñ éŕŕöŕ
kapi upÞŕöđüçé: ŕüñš ţĥé kapi ļööþ0 ŵĥéţĥéŕ ţĥé ŕüñ çàüĝĥţ éṽéŕýţĥîñĝ üþ, þàŕķéđ ŵöŕķ ƒöŕ ŕéṽîéŵ, öŕ ŵéñţ öñ àƒţéŕ ţĥé éṽéñţ šţŕéàḿ éñđéđ éàŕļý; ñöñ-žéŕö ŵĥéñ ţĥé ŕüñ ƃŕöķé öŕ îţš öüţçöḿé îš üñķñöŵñ
kapi check --shipÉñƒöŕçé: ţĥé ŕéļéàšé ƃàŕ0 þàšš, 3 ĝàţé üñḿéţ, 4 à ĝàţé đîđ ñöţ ŕüñ, 1 öþéŕàţîöñàļ éŕŕöŕ

Þàŕķéđ ŵöŕķ îš þéñđîñĝ ŕéṽîéŵ, ñöţ àñ éŕŕöŕ. Ţĥé ĝàţé îš ţĥé éẋþļîçîţ, öþţ-îñ éñƒöŕçéḿéñţ þöîñţ: ŵîŕé îţ îñţö ḿéŕĝé-ŕéǫüéšţ þîþéļîñéš àñđ à ǫüàļîţý ŕéĝŕéššîöñ çàññöţ ḿéŕĝé, ŵĥîļé đàý-ţö-đàý đŕîƒţ ƒļöŵš ţĥŕöüĝĥ ŕéṽîéŵ îñšţéàđ öƒ ƃŕéàķîñĝ ƃüîļđš.

Ţĥé šüŕƒàçéš

ŠüŕƒàçéĤöŵ îţ ŕüñšĜüîđé
ĜîţĤüƃ Àçţîöñšsetup-kapi îñšţàļļš ţĥé ÇĻÎ (ţĥé bowrain þļüĝîñ îñçļüđéđ ƃý đéƒàüļţ); kapi-action ŕüñš kapi up àñđ ŕéþöŕţš ŵĥàţ çĥàñĝéđ, àñđ à šţéþ öƒ ýöüŕ öŵñ çöḿḿîţš îţ öŕ öþéñš à þüļļ ŕéǫüéšţ. Ţĥé ŕéüšàƃļé kapi-workflows (up.yml@v1, gate.yml@v1) çöḿþöšé ƃöţĥ îñţö öñé-ļîñé ĵöƃšĜîţĤüƃ Àçţîöñš
ĜîţĻàƃ ÇÎkapi-components ƒŕöḿ ţĥé ÇÎ/ÇĐ Çàţàļöĝ: up đéļîṽéŕš à ḿéŕĝé ŕéǫüéšţ, check ĝàţéš ḿéŕĝé-ŕéǫüéšţ þîþéļîñéšĜîţĻàƃ ÇÎ
Àñý çöñţàîñéŕ ŕüññéŕghcr.io/neokapi/kapi (çöšîĝñ-šîĝñéđ; ţĥé šéŕṽéŕ-šýñç þļüĝîñ îš þŕéîñšţàļļéđ, šö kapi up / push / pull ŵöŕķ öüţ öƒ ţĥé ƃöẋ) àñđ ţĥé ÇĻÎ đîŕéçţļý; ţĥé éẋîţ çöđéš àƃöṽé àŕé ţĥé çöñţŕàçţţĥîš þàĝé
Ñö þîþéļîñéŢĥé ƒöŕĝé çöññéçţöŕ / Bowrain ĜîţĤüƃ Àþþ: ţĥé šéŕṽéŕ çöñṽéŕĝéš öñ éṽéŕý þüšĥ ţö ţĥé ţŕàçķéđ ƃŕàñçĥ àñđ đéļîṽéŕš ţĥé ŕéšüļţš ƃàçķ àš öñé ÞŔ/ḾŔŢĥé Bowrain ĜîţĤüƃ Àþþ

Ŵĥîçĥ ţö üšé ŵĥéñ

΃ ýöü öŵñ ţĥé ŕéþöšîţöŕý'š ÇÎ àñđ ŵàñţ çöñţŕöļ öṽéŕ ţŕîĝĝéŕš, đéļîṽéŕý, àñđ ĝàţîñĝ, üšé kapi-action öñ ĜîţĤüƃ öŕ kapi-components öñ ĜîţĻàƃ; éàçĥ ĵöƃ îš àñ öŕđîñàŕý þîþéļîñé šţéþ ýöü çàñ šĥàþé. Ƒöŕ ḿîñîḿàļ šéţüþ öñ ĜîţĤüƃ, ţĥé ŕéüšàƃļé ŵöŕķƒļöŵš ĝîṽé ýöü ţĥé ŵĥöļé þŕöđüçé-àñđ-đéļîṽéŕ öŕ ĝàţé ĵöƃ àš à šîñĝļé uses: ļîñé. Ŵĥéñ ñöƃöđý öŵñš ţĥé ŕéþöšîţöŕý'š ÇÎ (à đöçš, ḿàŕķéţîñĝ, öŕ çöñţéñţ ŕéþöšîţöŕý) öŕ ýöü ŵàñţ žéŕö çöñƒîĝüŕàţîöñ îñ ţĥé ŕéþöšîţöŕý àţ àļļ, çöññéçţ îţ šéŕṽéŕ-šîđé ŵîţĥ ţĥé ƒöŕĝé çöññéçţöŕ öŕ ţĥé Bowrain ĜîţĤüƃ Àþþ: ţĥé šéŕṽéŕ çöñṽéŕĝéš öñ éṽéŕý þüšĥ àñđ đéļîṽéŕš à þüļļ ŕéǫüéšţ ƃàçķ öñ îţš öŵñ.

Àüţĥéñţîçàţîñĝ à ŕüññéŕ

Ḿîñţ à ÇÎ ţöķéñ öñçé, ƒŕöḿ àñ àüţĥéñţîçàţéđ ḿàçĥîñé:

kapi auth login
kapi auth token create --name "ci" --expire-days 90

Ţĥé ţöķéñ (bwt_…) îš šĥöŵñ öñçé; šţöŕé îţ àš à ÇÎ šéçŕéţ îḿḿéđîàţéļý. Öñ ţĥé ŕüññéŕ, BOWRAIN_AUTH_TOKEN çàŕŕîéš ţĥé çŕéđéñţîàļ, àñđ ţĥé ÇĻÎ çĥéçķš îţ ƃéƒöŕé àñý šţöŕéđ ļöĝîñ:

BOWRAIN_AUTH_TOKEN=bwt_...
BOWRAIN_SERVER_URL=https://bowrain.example.com # self-hosted only

BOWRAIN_SERVER_URL îš öñļý ñééđéđ ƒöŕ à šéļƒ-ĥöšţéđ šéŕṽéŕ: ţĥé ĥöšţéđ šéŕṽîçé (https://app.bowrain.cloud) îš ţĥé ƃüîļţ-îñ đéƒàüļţ, àñđ þŕöĵéçţ çöḿḿàñđš (kapi up, push, pull, check) ŕéàđ ţĥé šéŕṽéŕ ƒŕöḿ ţĥé çĥéçķéđ-öüţ ŕéçîþé'š bowrain: ƃļöçķ îñ àñý çàšé. Öñ ĜîţĤüƃ Àçţîöñš, setup-kapiauth-token àñđ server îñþüţš éẋþöŕţ éẋàçţļý ţĥéšé ţŵö ṽàŕîàƃļéš. Öñ ĜîţĻàƃ, šéţ ţĥéḿ àš ḿàšķéđ ÇÎ/ÇĐ ṽàŕîàƃļéš. Ļîšţ àñđ ŕéṽöķé ţöķéñš ŵîţĥ kapi auth token list àñđ kapi auth token delete.

Ŵĥàţ à ĵöƃ ñééđš ƃéýöñđ ţĥé šéŕṽéŕ ţöķéñ đéþéñđš öñ îţš ṽéñüé:

  • Šéŕṽéŕ ṽéñüé (à çöññéçţéđ þŕöĵéçţ): ñöţĥîñĝ. Ţĥé šéŕṽéŕ ĥöļđš ţĥé ÀÎ ķéýš; ţĥé ĵöƃ öñļý þüšĥéš, ŵàţçĥéš, àñđ þüļļš.
  • Ļöçàļ ṽéñüé (kapi up --local, öŕ à þŕöĵéçţ ŵîţĥ ñö bowrain: ƃļöçķ): ţĥé ļööþ ŕüñš îñšîđé ţĥé ĵöƃ àñđ ñééđš à þŕöṽîđéŕ ķéý, ƒöŕ éẋàḿþļé ANTHROPIC_API_KEY, àš à ÇÎ šéçŕéţ.
  • Ĝàţé-öñļý ĵöƃš: kapi check --ship ŕéàđš ţĥé ŵöŕķîñĝ ţŕéé àñđ ñééđš ñö ÀÎ ķéýš; ŵĥéñ ţĥé ĝàţé éñƒöŕçéš ĝöṽéŕñéđ ţéŕḿš, ţĥé ĵöƃ ŕüñš kapi pull ƒîŕšţ àñđ ñééđš ţĥé šéŕṽéŕ ţöķéñ. Šéé Ĝàţé ĝöṽéŕñéđ ţéŕḿš îñ ÇÎ.

Ñéẋţ