teleskopio.github.io
teleskopio logo
Issue Star

teleskopio - lightweight kubernetes web client.

Features

Install

Linux

Download release.

MacOS

Use brew (ARM and Intel):

  1. brew tap teleskopio/homebrew-teleskopio
  2. brew install --cask teleskopio

Docker

  1. Pull docker image from Packages
docker pull ghcr.io/teleskopio/teleskopio:latest
  1. Generate config
docker run -it --rm ghcr.io/teleskopio/teleskopio:latest config > config.yaml
  1. Edit config
$ htpasswd -nbB admin MySecret123 # apache2-utils
> admin:$2y$05$U7puDu7wKOMP6i4eI1nO4ux909bH8FuPadEQq2oxx7SRXrBh3xJIG
vim config.yaml # edit config and add admin user
# add kubeconfig content to kube.configs
# check example in config.yaml
  1. Run

Run with --network=host if you're using kind cluster

docker run -it --rm --network=host -p 3080:3080 \
  -v $(pwd)/config.yaml:/usr/bin/config.yaml ghcr.io/teleskopio/teleskopio:latest \
  --config=/usr/bin/config.yaml

Or run with docker network

docker run -it --rm -p 3080:3080 \
  -v $(pwd)/config.yaml:/usr/bin/config.yaml ghcr.io/teleskopio/teleskopio:latest \
  --config=/usr/bin/config.yaml
5:47AM INF set loglevel level=DEBUG
5:47AM INF version version=""
5:47AM INF initialize web server addr=:3080
...

Helm

Right now only building helm package from sources install option available.

Clone repository. Run make build-helm-chart (helm binary in PATH is required.)

Check out helm chart values.yaml.

By default RBAC's for teleskopio give access to all cluster and to any kind of operation.

$ git clone git@github.com:teleskopio/teleskopio.git
$ cd teleskopio
$ make build-helm-char
helm package ./deploy/teleskopio
Successfully packaged chart and saved it to: /home/dev/teleskopio/teleskopio-0.1.4.tgz
# Add you own config.yaml
$ cat config.yaml
service:
  type: ClusterIP
  port: 3090

config:
  name: config
  content:
    log_color: false
    log_json: true
    log_level: INFO
    server_http: ":3090"
    jwt_key: "b2436e01424c714e4583f2f2851a0e1304440157" # openssl rand -hex 20
    auth_disabled: false
    users:
      - username: admin
        password: "$2y$05$PgEhSAwkE0RlbYiJqSxF/e529Xu5HGey.cEY/qqoksLlFckk3kaiW" # htpasswd -nbB admin MySecret123
        role: "admin"
      - username: user
        password: "$2y$05$PgEhSAwkE0RlbYiJqSxF/e529Xu5HGey.cEY/qqoksLlFckk3kaiW"
        role: "viewer"
    kube:
      configs:
# Install local helm chart with own values.yaml
$ helm install teleskopio ./teleskopio-0.1.4.tgz -f values.yaml
NAME: teleskopio
LAST DEPLOYED: Sun Feb  1 15:39:52 2026
NAMESPACE: default
STATUS: deployed
REVISION: 1
DESCRIPTION: Install complete
NOTES:
1. Get the application URL by running these commands:
  export POD_NAME=$(kubectl get pods --namespace default -l "app.kubernetes.io/name=teleskopio,app.kubernetes.io/instance=teleskopio" -o jsonpath="{.items[0].metadata.name}")
  export CONTAINER_PORT=$(kubectl get pod --namespace default $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}")
  echo "Visit http://127.0.0.1:8080 to use your application"
  kubectl --namespace default port-forward $POD_NAME 8080:$CONTAINER_PORT

# Follow NOTES instruction and use port-forward
$ kubectl --namespace default port-forward $POD_NAME 8080:$CONTAINER_PORT
Forwarding from 127.0.0.1:8080 -> 3090
Forwarding from [::1]:8080 -> 3090

Open http://127.0.0.1:8080.

Configuration

log_color: false # Color output (only work with text)
log_json: true # Output logs as JSON
log_level: INFO # Log Level
server_http: ":3080" # HTTP address
protocol: http # the web server protocol http,https
jwt_key: "super-salt" # salt for JWT token  `openssl rand -hex 20`
jwt_token_expire: 1h # how long jwt token is valid (1h by default)
auth_disabled: false # set to true to disable auth completly
mcp:
  enabled: false # mcp server is disabled by default
  api_key: "somekey" # protect /mcp server with api_key
  api_key_header: "X-MCP" # header key e.g. (X-MCP: somekey)
  cors: # cors settings for /mcp endpoint, in case if the client in another web app
    origin: http://localhost:5802 # must be exactly as the client origin!
    headers: # additional headers
      - mcp-session-id
      - mcp-protocol-version
users:
  - username: admin
    password: "" # htpasswd -nbB admin MySecret12345
    role: "admin"
  - username: user
    password: ""
    role: "viewer"
kube:
  configs:
    # - apiVersion: v1
    #   clusters:
    #     - cluster:
    #         certificate-authority-data: LS0tLS1...
    #         server: https://127.0.0.1:57598
    #       name: kind-kind
    #   contexts:
    #     - context:
    #         cluster: kind-kind
    #         user: kind-kind
    #       name: kind-kind
    #   current-context: kind-kind
    #   kind: Config
    #   preferences: {}
    #   users:
    #     - name: kind-kind
    #       user:
    #         client-certificate-data: LS0tL...
    #         client-key-data: LS0tL...