Setup
Prerequisites
- Docker and Docker Compose installed
- A machine or server reachable by your development team (local, VM, cloud instance)
- Port
8090(API) and5173(UI) available
Install with Docker
Clone the dashboard repository and start the services:
git clone https://github.com/grekt-labs/dashboard.git
cd dashboard
docker compose up -dThis starts two containers:
| Service | Port | Description |
|---|---|---|
pocketbase | 8090 | API and database |
frontend | 5173 | Dashboard web UI |
Verify both are running:
docker compose psOnce running, open http://localhost:5173 in your browser.
docker-compose.yml
services:
pocketbase:
image: ghcr.io/muchobien/pocketbase:latest
volumes:
- ./pb_data:/pb_data
- ./pb_migrations:/pb_migrations
- ./pb_hooks:/pb_hooks
ports:
- "8090:8090"
frontend:
build:
context: ./frontend
dockerfile: Dockerfile
ports:
- "5173:5173"
environment:
- VITE_POCKETBASE_URL=http://localhost:8090
depends_on:
- pocketbaseData is persisted in ./pb_data. Back up this directory regularly.
Ports
To change ports, update the ports mapping and set VITE_POCKETBASE_URL accordingly.
Initial setup
On the first visit, the dashboard detects that no users exist and shows a setup form. Create your account with an email and password (minimum 8 characters). This becomes the owner account.
Once created, the setup screen is permanently locked. All further users are managed from the dashboard.
WARNING
Save these credentials. They can be reset through the PocketBase admin panel, but it is better not to lose them.
Create an API token
Your projects need a token to authenticate with the dashboard API. Only the admin account can create tokens.
- Log in as admin
- Go to Settings > API Tokens
- Give the token a name, choose an expiration, and click Create
The token is shown once. Copy it immediately. It starts with gdk_ and cannot be retrieved later.
Configure your project
Run the interactive setup command:
grekt dashboard setupThis prompts for the dashboard URL and API token, then saves them to .grekt/config.yaml.
Alternatively, edit .grekt/config.yaml manually:
dashboard:
url: http://your-dashboard-host
token: gdk_your-token-hereThis file lives inside .grekt/, which is already gitignored.
TIP
grekt init also offers dashboard configuration during the onboarding wizard.
First sync
Run the sync command to verify everything works:
grekt dashboard syncThis uploads your project metadata, installed artifacts, scan and eval reports, and cleans up anything that was removed locally.
CI/CD
To keep the dashboard up to date automatically, add a sync step to your pipeline. grekt scan and grekt eval write their results to .grekt/reports/ as local files. grekt dashboard sync picks them up, uploads everything, and deletes the report files.
Using the setup action
The grekt setup action generates .grekt/config.yaml for you. Pass the dashboard URL and token as secrets:
- name: Setup grekt
uses: grekt-labs/actions/github/setup@v1
with:
dashboard-url: ${{ secrets.GREKT_DASHBOARD_URL }}
dashboard-token: ${{ secrets.GREKT_DASHBOARD_TOKEN }}
- name: Install artifacts
run: grekt install
- name: Scan # optional
run: grekt scan
- name: Eval # optional
run: grekt eval
- name: Sync to dashboard
run: grekt dashboard syncinclude:
- remote: "https://raw.githubusercontent.com/grekt-labs/actions/main/gitlab/templates/setup.yml"
dashboard-sync:
extends: .grekt-setup
variables:
GREKT_DASHBOARD_URL: ${GREKT_DASHBOARD_URL}
GREKT_DASHBOARD_TOKEN: ${GREKT_DASHBOARD_TOKEN}
script:
- grekt install
- grekt scan # optional
- grekt eval # optional
- grekt dashboard syncManual configuration
If you prefer not to use the setup action, generate .grekt/config.yaml directly in your pipeline:
- name: Configure dashboard
run: |
mkdir -p .grekt
cat > .grekt/config.yaml <<EOF
# ... rest of your grekt config (registries, etc.)
dashboard:
url: ${{ secrets.GREKT_DASHBOARD_URL }}
token: ${{ secrets.GREKT_DASHBOARD_TOKEN }}
EOF
- name: Install artifacts
run: grekt install
- name: Scan # optional
run: grekt scan
- name: Eval # optional
run: grekt eval
- name: Sync to dashboard
run: grekt dashboard syncdashboard-sync:
stage: deploy
script:
- mkdir -p .grekt
- |
cat > .grekt/config.yaml <<EOF
# ... rest of your grekt config (registries, etc.)
dashboard:
url: ${GREKT_DASHBOARD_URL}
token: ${GREKT_DASHBOARD_TOKEN}
EOF
- grekt install
- grekt scan # optional
- grekt eval # optional
- grekt dashboard sync