Native Shell
Native Shell은 모든 플랫폼의 앱 안에서 만들어지는 AI UI입니다
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗A lightweight Kubernetes operator that provisions Gitea bot users, API tokens, SSH keys, repository access, and Actions secrets declaratively via CRDs.
Applications and automation pipelines can request their own Gitea credentials without manual Gitea admin access or pre-deploy scripts.
The operator manages one CRD kind:
| Kind | What it provisions |
|---|---|
GiteaUser | A Gitea user with an API token, SSH keys, repository collaborations, and Actions secrets |
All resources are reconciled continuously — the operator detects and repairs out-of-band drift every 5 minutes.
Add the Helm repository:
helm repo add gitea-provisioner https://drewsonne.github.io/gitea-provisioner
helm repo update
Install the chart:
helm install gitea-provisioner gitea-provisioner/gitea-provisioner \
--namespace gitea \
--set gitea.url=http://gitea-http.gitea.svc.cluster.local \
--set gitea.adminSecret.name=gitea-admin-credentials
apiVersion: v1
kind: Secret
metadata:
name: gitea-admin-credentials
namespace: gitea
stringData:
username: admin
password: <admin-password>
Default values:
image:
repository: drewsonne/gitea-provisioner
tag: latest
gitea:
url: http://gitea-http.gitea.svc.cluster.local
adminSecret:
name: gitea-admin-credentials
namespace: gitea
Creates a Gitea user with a managed API token stored in a Kubernetes Secret.
apiVersion: gitea.drewsonne.github.io/v1
kind: GiteaUser
metadata:
name: gizmo
namespace: gitea
spec:
username: gizmo
email: [email protected]
Control what the generated API token can access. Defaults to ["repository"].
spec:
tokenScopes:
- repository
- issue
- user
- organization
Available scopes: activitypub, admin, issue, misc, notification, organization, package, repository, user.
Grant the user collaborator access to specific repositories with a permission level.
spec:
repositories:
- name: myorg/my-repo
permission: write # read | write | admin
- name: myorg/other-repo
permission: read
Register SSH public keys on the account. Keys are identified by their name (title in Gitea). The operator adds missing keys, replaces keys whose content has changed, and removes keys whose name is dropped from the list. Keys added outside this spec are never touched.
Inline public key:
spec:
sshKeys:
- name: my-laptop
publicKey: "ssh-ed25519 AAAA... user@host"
From a Kubernetes Secret (compatible with the 1Password operator):
# The 1Password operator syncs the key into a Secret
apiVersion: onepassword.com/v1
kind: OnePasswordItem
metadata:
name: drew-ssh-key
namespace: gitea
spec:
itemPath: "vaults/Home Lab/items/gitea-drew-ssh-key"
---
apiVersion: gitea.drewsonne.github.io/v1
kind: GiteaUser
metadata:
name: drew
namespace: gitea
spec:
username: drew
email: [email protected]
sshKeys:
- name: home-lab
secretRef:
name: drew-ssh-key # Secret created by OnePasswordItem above
namespace: gitea
key: "public key" # field name within the 1Password item / Secret
Set user-level Gitea Actions secrets sourced from Kubernetes Secrets. Secret values are always re-applied on reconcile (Gitea never returns values so drift can only be detected by name). Secrets removed from the list are deleted from Gitea.
spec:
actionsSecrets:
- name: OP_SERVICE_ACCOUNT_TOKEN
secretRef:
name: op-service-account
namespace: gitea
key: token
- name: REGISTRY_TOKEN
secretRef:
name: registry-credentials
key: token # namespace defaults to the CR's namespace
secretRef fields:
| Field | Required | Description |
|---|---|---|
name | yes | Name of the Kubernetes Secret |
key | yes | Key within the Secret whose value is used |
namespace | no | Namespace of the Secret; defaults to the CR's namespace |
spec:
admin: true # default: false
By default the token Secret is created as {cr-name}-gitea-token in the CR's namespace. Override with:
spec:
tokenSecretRef:
name: my-bot-token
namespace: other-namespace # cross-namespace; no owner reference applied
apiVersion: gitea.drewsonne.github.io/v1
kind: GiteaUser
metadata:
name: gizmo
namespace: gitea
spec:
username: gizmo
email: [email protected]
admin: false
tokenScopes:
- repository
- issue
- user
- organization
repositories:
- name: myorg/openclaw
permission: write
- name: myorg/docs
permission: read
sshKeys:
- name: deploy-key
secretRef:
name: gizmo-ssh-key
key: "public key"
actionsSecrets:
- name: OP_SERVICE_ACCOUNT_TOKEN
secretRef:
name: op-credentials
key: token
tokenSecretRef:
name: openclaw-gitea-token
namespace: gitea
Every CR accepts an optional giteaAdminSecret field to use credentials from a different Gitea instance (useful for multi-tenant setups):
spec:
giteaAdminSecret:
name: my-other-gitea-admin
namespace: gitea
The referenced Secret may contain username, password, and optionally url (overrides the GITEA_URL env var).
GiteaUser creates a Secret containing:
| Key | Description |
|---|---|
token | The Gitea API token |
username | The Gitea username |
password | The user's Gitea password (for basic-auth clients) |
url | The Gitea instance URL |
kubectl get secret gizmo-gitea-token -n gitea -o yaml
name (title); only keys whose title appears in the spec are ever modified or removedkubectl describe as a K8s Warning event and in the Drift printer columnkubectl get giteausers
Printer columns include Username, Email, Admin, Ready, Drift, and Age.
Drift events are also emitted as Kubernetes Warning events visible via kubectl describe giteauser <name>.
Build locally:
docker build -t drewsonne/gitea-provisioner:dev .
Run locally (requires cluster access):
docker run --rm \
-e GITEA_URL=http://gitea-http.gitea.svc.cluster.local \
-e GITEA_ADMIN_USERNAME=admin \
-e GITEA_ADMIN_PASSWORD=... \
drewsonne/gitea-provisioner:dev
GPLv3