2 Commits

Author SHA1 Message Date
Lumpiasty 3532a65337 add kaneo app
ci/woodpecker/push/flux-reconcile-source Pipeline was successful
2026-05-05 20:38:44 +02:00
Lumpiasty bad1df3268 add llama-swap and meridian to README 2026-05-05 20:36:17 +02:00
12 changed files with 229 additions and 3 deletions
+5 -3
View File
@@ -243,9 +243,11 @@ flowchart TD
### AI infrastructure
| Logo | Name | Address | Description |
|------|------|---------|-------------|
| <img src="docs/assets/llama-cpp.svg" alt="LLaMA.cpp" height="50" width="50"> | LLaMA.cpp | https://llama.lumpiasty.xyz/ | LLM inference server running local models with GPU acceleration |
| Logo | Name | Description |
|------|------|-------------|
| <img src="docs/assets/llama-cpp.svg" alt="LLaMA.cpp" height="50" width="50"> | LLaMA.cpp | LLM inference server running local models with GPU acceleration |
| <img src="docs/assets/llama-swap.svg" alt="llama-swap" height="50" width="50"> | llama-swap | Model swapping for LLaMA.cpp |
| <img src="docs/assets/meridian.svg" alt="meridian" height="50" width="50"> | Meridian | Proxy that bridges Anthropic's official SDK to third-party tools |
### Applications/Services
+8
View File
@@ -0,0 +1,8 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- namespace.yaml
- oauth-secret.yaml
- postgres-volume.yaml
- postgres-cluster.yaml
- release.yaml
+4
View File
@@ -0,0 +1,4 @@
apiVersion: v1
kind: Namespace
metadata:
name: kaneo
+43
View File
@@ -0,0 +1,43 @@
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: kaneo-secret
namespace: kaneo
---
apiVersion: secrets.hashicorp.com/v1beta1
kind: VaultAuth
metadata:
name: kaneo
namespace: kaneo
spec:
method: kubernetes
mount: kubernetes
kubernetes:
role: kaneo
serviceAccount: kaneo-secret
---
apiVersion: secrets.hashicorp.com/v1beta1
kind: VaultStaticSecret
metadata:
name: kaneo-authentik
namespace: kaneo
spec:
type: kv-v2
mount: secret
path: authentik/kaneo
destination:
create: true
name: kaneo-authentik
type: Opaque
transformation:
excludeRaw: true
templates:
client_id:
text: '{{ get .Secrets "client_id" }}'
client_secret:
text: '{{ get .Secrets "client_secret" }}'
vaultAuthRef: kaneo
+16
View File
@@ -0,0 +1,16 @@
---
apiVersion: postgresql.cnpg.io/v1
kind: Cluster
metadata:
name: kaneo-db
namespace: kaneo
spec:
instances: 1
storage:
pvcTemplate:
storageClassName: ssd-lvmpv
resources:
requests:
storage: 10Gi
volumeName: kaneo-db-1
+33
View File
@@ -0,0 +1,33 @@
apiVersion: local.openebs.io/v1alpha1
kind: LVMVolume
metadata:
labels:
kubernetes.io/nodename: anapistula-delrosalae
name: kaneo-db-1
namespace: openebs
spec:
capacity: 10Gi
ownerNodeID: anapistula-delrosalae
shared: "yes"
thinProvision: "no"
vgPattern: ^openebs-ssd$
volGroup: openebs-ssd
---
kind: PersistentVolume
apiVersion: v1
metadata:
name: kaneo-db-1
spec:
capacity:
storage: 10Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
storageClassName: ssd-lvmpv
volumeMode: Filesystem
csi:
driver: local.csi.openebs.io
fsType: btrfs
volumeHandle: kaneo-db-1
---
# PVCs are dynamically created by the Postgres operator
+77
View File
@@ -0,0 +1,77 @@
---
apiVersion: source.toolkit.fluxcd.io/v1
kind: GitRepository
metadata:
name: kaneo
namespace: kaneo
spec:
interval: 24h
url: https://github.com/usekaneo/kaneo.git
ref:
tag: v2.7.1
ignore: |
# exclude all
/*
# include charts directory
!/charts/
---
apiVersion: helm.toolkit.fluxcd.io/v2
kind: HelmRelease
metadata:
name: openwebui
namespace: kaneo
spec:
interval: 30m
chart:
spec:
chart: ./charts/kaneo
sourceRef:
kind: GitRepository
name: kaneo
values:
ingress:
enabled: true
className: nginx-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /$1
hosts:
- host: kaneo.lumpiasty.xyz
paths:
- path: /?(.*)
pathType: Prefix
service: web
port: 80
- path: /api/?(.*)
pathType: Prefix
service: api
port: 1337
tls:
- secretName: kaneo-ingress
hosts:
- kaneo.lumpiasty.xyz
postgresql:
enabled: false
kaneo:
env:
database:
external:
enabled: true
existingSecret:
enabled: true
name: kaneo-db-app
passwordKey: uri
extraEnv:
- name: CUSTOM_OAUTH_DISCOVERY_URL
value: https://authentik.lumpiasty.xyz/application/o/kaneo/.well-known/openid-configuration
- name: CUSTOM_OAUTH_CLIENT_ID
valueFrom:
secretKeyRef:
name: kaneo-authentik
key: client_id
- name: CUSTOM_OAUTH_CLIENT_SECRET
valueFrom:
secretKeyRef:
name: kaneo-authentik
key: client_secret
+1
View File
@@ -13,3 +13,4 @@ resources:
- openwebui
- woodpecker
- meridian
- kaneo
File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 38 KiB

+16
View File
@@ -0,0 +1,16 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" fill="none">
<rect width="64" height="64" rx="14" fill="#1C1830"/>
<!-- Meridian axis -->
<line x1="32" y1="10" x2="32" y2="54" stroke="#8B7CF6" stroke-width="2.5" stroke-linecap="round"/>
<!-- Latitude arcs — outer -->
<path d="M16 20 A18 18 0 0 1 48 20" fill="none" stroke="#C4B5FD" stroke-width="1.2" opacity="0.4"/>
<path d="M16 44 A18 18 0 0 0 48 44" fill="none" stroke="#C4B5FD" stroke-width="1.2" opacity="0.4"/>
<!-- Latitude arcs — inner -->
<path d="M20 30 A14 14 0 0 1 44 30" fill="none" stroke="#C4B5FD" stroke-width="0.8" opacity="0.2"/>
<path d="M20 34 A14 14 0 0 0 44 34" fill="none" stroke="#C4B5FD" stroke-width="0.8" opacity="0.2"/>
<!-- Poles -->
<circle cx="32" cy="10" r="3.5" fill="#C4B5FD"/>
<circle cx="32" cy="54" r="3.5" fill="#C4B5FD"/>
<!-- Center node -->
<circle cx="32" cy="32" r="3" fill="#8B7CF6"/>
</svg>

After

Width:  |  Height:  |  Size: 931 B

+6
View File
@@ -0,0 +1,6 @@
bound_service_account_names:
- kaneo-secret
bound_service_account_namespaces:
- kaneo
token_policies:
- kaneo
+3
View File
@@ -0,0 +1,3 @@
path "secret/data/authentik/kaneo" {
capabilities = ["read"]
}