We are excited to unveil Huginn, a modern, responsive developer dashboard designed specifically for GitLab, wrapped in a premium, retro-styled Gruvbox Dark aesthetic.
Huginn is the sister application to Muninn (which was built for GitHub). Huginn was created to provide GitLab developers with the exact same cockpit experience: a unified interface to monitor pipelines, merge requests, issues, boards, security warnings, and metrics, while maintaining compatibility with local AI agent dev environments.
Why Huginn?
In Norse mythology, Huginn (from Old Norse “thought”) and Muninn (from Old Norse “memory”) are a pair of ravens that fly all over the world to bring information to the god Odin.
While Muninn handled GitHub repositories, GitLab users were left without a dedicated command center. Huginn fills this gap, providing a centralized dashboard that works out-of-the-box with GitLab.com as well as self-hosted GitLab Instances.
Key Features
- Unified Overview: Real-time stats on running pipelines, open merge requests, assigned issues, security warnings, and total project stars.
- CI/CD Pipelines Monitor: View the status of recent builds, retry failed runs, and cancel active jobs directly from the UI.
- Merge Requests & Issues: Visual tables summarizing MRs needing review or issues requiring developer action.
- Interactive Kanban Boards: A fully integrated board layout querying GitLab’s GraphQL API to map issues, epics, and labels.
- Duo Chat Integration: A sidebar chat interface powered by local Large Language Models (LLMs) like
qwen3:14brunning on Ollama, helping you analyze repository status instantly. - Local WebMCP Bridge: An agent daemon (
agent_daemon.py) that links the portal to local AI agents, enabling automated code modifications, pipeline triggers, and issue updates.
Technical Hurdles & Solutions
1. GitLab.com API Query Timeouts (HTTP 500)
During initial testing against GitLab.com, we found that retrieving closed issues and merged merge requests for metrics (Lead Time, Cycle Time) returned HTTP 500 errors and timed out.
- The Cause: The original code queried global endpoints like
/issues?state=closed&scope=all. On GitLab.com, settingscope=allqueries all public issues across millions of repositories, hitting database timeouts. - The Solution: We restructured the client in
assets/js/app.jsto run user-specific queries in parallel:scope=created_by_meandscope=assigned_to_me. We then merge and deduplicate the results in the browser. This resolved the timeout errors instantly and allowed the metrics dashboard to load in under a second!
2. GraphQL Selection Constraints
GitLab’s GraphQL API is stricter than GitHub’s. For example, querying issue labels requires explicit selections of subfields. We resolved query parse errors by refactoring the board schema request to specify node selections:
labels(first: 10) {
nodes {
title
color
}
}
The Theme: Gruvbox Dark
Following the design system of Muninn, Huginn’s documentation and blog site is styled with a custom-built Gruvbox Dark color scheme:
- Background (hard):
#1d2021 - Background (medium):
#282828 - Foreground (primary):
#ebdbb2 - Accent (Orange):
#fe8019 - Accent (Blue):
#83a598
Combined with Outfit and JetBrains Mono typography, the interface delivers a retro, hacker-centric, yet clean and professional layout.
Getting Started
To run Huginn locally:
- Clone the repository and configure
.envwith your GitLab Personal Access Token (PAT). - Launch the Jekyll development server:
bundle exec jekyll serve --port 4005 - Open
http://localhost:4005in your browser. - Launch the local Agent Daemon to connect your AI workflows:
python agent_daemon.py
Huginn is ready to serve as your GitLab thought engine!