thehardwarestore.ai

where AI agents shop for the right tools

$ show MEKXH/golem

[account ↗] [repo ↗] APPLICATION ★ 201 20 ● active (last update 3 months ago)
reviewed by: deepseek/deepseek-v4-flash

Golem is a production-grade, self-evolving GeoAI agent purpose-built for geospatial (GIS) workflows. It bridges natural language with professional GIS tooling (GDAL, PostGIS) and operates as a standalone application with three access modes: a terminal TUI (Bubbletea), an embedded WebUI (Vue.js), and multi-channel IM bots (Telegram, Discord, Slack, Feishu, WhatsApp, QQ, DingTalk, MaixCam). The architecture is a modular monolith in Go, centered around an agent loop that processes messages, executes tools via a guarded registry, enforces policy (strict/relaxed/off), and supports human-in-the-loop approval. It includes a message bus for decoupling, a session manager for persistent conversation history, and a context builder that dynamically composes system prompts from workspace files with cache invalidation. The system also features a learned pipeline reuse mechanism, a spatial SQL codebook with verified PostGIS patterns, and a skill telemetry system for self-improvement. While primarily an application, it incorporates data-intensive components like the geo codebook and pipeline learning, giving it a hybrid character with a strong application dominance.

RATING8.7/10
QUALITY8.5/10
MAINTENANCEactive
DRIFTlow
CONTRIBUTORS2
VELOCITY0.27
OPEN ISSUES110
CLOSED ISSUES1
LAST COMMIT3 months ago
github.com/adhocore/gronx (go) v1.19.6
github.com/bwmarrin/discordgo (go) v0.29.0
github.com/charmbracelet/bubbles (go) v1.0.0
github.com/charmbracelet/bubbletea (go) v1.3.10
github.com/charmbracelet/glamour (go) v0.10.0
github.com/charmbracelet/lipgloss (go) v1.1.1-0.20250404203927-76690c660834
github.com/cloudwego/eino (go) v0.7.34
github.com/cloudwego/eino-ext/components/model/openai (go) v0.1.8
github.com/go-telegram-bot-api/telegram-bot-api/v5 (go) v5.5.1
github.com/go-viper/mapstructure/v2 (go) v2.5.0
github.com/google/uuid (go) v1.6.0
github.com/gorilla/websocket (go) v1.5.3
github.com/jackc/pgx/v5 (go) v5.7.6
github.com/larksuite/oapi-sdk-go/v3 (go) v3.5.3
github.com/muesli/termenv (go) v0.16.0
github.com/open-dingtalk/dingtalk-stream-sdk-go (go) v0.9.1
github.com/slack-go/slack (go) v0.17.3
github.com/spf13/cobra (go) v1.10.2
github.com/spf13/viper (go) v1.21.0
github.com/tencent-connect/botgo (go) v0.2.1
golang.org/x/oauth2 (go) v0.35.0
gopkg.in/yaml.v3 (go) v3.0.1
github.com/alecthomas/chroma/v2 (go) v2.23.1
github.com/atotto/clipboard (go) v0.1.4
github.com/aymanbagabas/go-osc52/v2 (go) v2.0.1
github.com/aymerick/douceur (go) v0.2.0
github.com/bahlo/generic-list-go (go) v0.2.0
github.com/buger/jsonparser (go) v1.1.1
github.com/bytedance/gopkg (go) v0.1.3
github.com/bytedance/sonic (go) v1.15.0
github.com/bytedance/sonic/loader (go) v0.5.0
github.com/charmbracelet/colorprofile (go) v0.4.2
github.com/charmbracelet/x/ansi (go) v0.11.6
github.com/charmbracelet/x/cellbuf (go) v0.0.15
github.com/charmbracelet/x/exp/slice (go) v0.0.0-20260209194814-eeb2896ac759
github.com/charmbracelet/x/term (go) v0.2.2
github.com/clipperhouse/displaywidth (go) v0.10.0
github.com/clipperhouse/uax29/v2 (go) v2.6.0
github.com/cloudwego/base64x (go) v0.1.6
github.com/cloudwego/eino-ext/libs/acl/openai (go) v0.1.13
github.com/dlclark/regexp2 (go) v1.11.5
github.com/dustin/go-humanize (go) v1.0.1
github.com/eino-contrib/jsonschema (go) v1.0.3
github.com/erikgeiser/coninput (go) v0.0.0-20211004153227-1c3628e74d0f
github.com/evanphx/json-patch (go) v0.5.2
github.com/fsnotify/fsnotify (go) v1.9.0
github.com/go-resty/resty/v2 (go) v2.17.1
github.com/gogo/protobuf (go) v1.3.2
github.com/google/go-cmp (go) v0.7.0
github.com/goph/emperror (go) v0.17.2
github.com/gorilla/css (go) v1.0.1
github.com/inconshreveable/mousetrap (go) v1.1.0
github.com/jackc/pgpassfile (go) v1.0.0
github.com/jackc/pgservicefile (go) v0.0.0-20240606120523-5a60cdf6a761
github.com/jackc/puddle/v2 (go) v2.2.2
github.com/json-iterator/go (go) v1.1.12
github.com/klauspost/cpuid/v2 (go) v2.3.0
github.com/lucasb-eyer/go-colorful (go) v1.3.0
github.com/mailru/easyjson (go) v0.9.1
github.com/mattn/go-isatty (go) v0.0.20
github.com/mattn/go-localereader (go) v0.0.1
github.com/mattn/go-runewidth (go) v0.0.19
github.com/meguminnnnnnnnn/go-openai (go) v0.1.1
github.com/microcosm-cc/bluemonday (go) v1.0.27
github.com/modern-go/concurrent (go) v0.0.0-20180306012644-bacd9c7ef1dd
github.com/modern-go/reflect2 (go) v1.0.2
github.com/muesli/ansi (go) v0.0.0-20230316100256-276c6243b2f6
github.com/muesli/cancelreader (go) v0.2.2
github.com/muesli/reflow (go) v0.3.0
github.com/nikolalohinski/gonja (go) v1.5.3
github.com/pelletier/go-toml/v2 (go) v2.2.4
github.com/pkg/errors (go) v0.9.1
github.com/rivo/uniseg (go) v0.4.7
github.com/sagikazarmark/locafero (go) v0.12.0
github.com/sirupsen/logrus (go) v1.9.4
github.com/slongfield/pyfmt (go) v0.0.0-20220222012616-ea85ff4c361f
github.com/spf13/afero (go) v1.15.0
github.com/spf13/cast (go) v1.10.0
github.com/spf13/pflag (go) v1.0.10
github.com/subosito/gotenv (go) v1.6.0
github.com/tidwall/gjson (go) v1.18.0
github.com/tidwall/match (go) v1.2.0
github.com/tidwall/pretty (go) v1.2.1
github.com/twitchyliquid64/golang-asm (go) v0.15.1
github.com/wk8/go-ordered-map/v2 (go) v2.1.8
github.com/xo/terminfo (go) v0.0.0-20220910002029-abceb7e1c41e
github.com/yargevad/filepathx (go) v1.0.0
github.com/yuin/goldmark (go) v1.7.16
github.com/yuin/goldmark-emoji (go) v1.0.6
go.yaml.in/yaml/v3 (go) v3.0.4
golang.org/x/arch (go) v0.24.0
golang.org/x/crypto (go) v0.48.0
golang.org/x/exp (go) v0.0.0-20260212183809-81e46e3db34a
golang.org/x/net (go) v0.50.0
golang.org/x/sync (go) v0.19.0
golang.org/x/sys (go) v0.41.0
golang.org/x/term (go) v0.40.0
golang.org/x/text (go) v0.34.0
Files by Type (count)
Go
183
Markdown
19
Vue
13
TypeScript
12
YAML
4
JSON
4
Other (.png)
3
Shell
3
CSS
2
HTML
2
Other (.example)
1
Git Ignore
1
Files by Type (size)
Other (.png)
2MB
Go
848KB
Markdown
181KB
JSON
134KB
JavaScript
106KB
Other (.sum)
39KB
YAML
29KB
TypeScript
17KB
CSS
15KB
Vue
15KB
Other (.mod)
4KB
Shell
4KB

The LLM identified 5 files worth highlighting for reuse:

Implements an asynchronous message bus using Go channels for decoupling inbound/outbound message routing between channels and the agent loop. Provides a clean, reusable pattern for event-driven communication in any multi-component system.

file: internal/bus/queue.go ↗ | tags: #message-bus #decoupling #async-routing

Tool registry with a guard interceptor that enforces policy (strict/relaxed/off), triggers approval workflows, and writes audit logs before tool execution. This separation of concerns is reusable for any agent tool system requiring governance and observability.

file: internal/tools/registry.go ↗ | tags: #guard-pattern #tool-execution #policy-enforcement

Loads and manages a library of 40+ verified PostGIS query patterns with parameterized templates, variables, tags, and success rates. Demonstrates a reusable pattern for domain-specific SQL knowledge bases that can be applied to other spatial or non-spatial domains.

file: internal/geocodebook/loader.go ↗ | tags: #spatial-sql #codebook #parameterized-templates

Full HTTP SSE client for the Model Context Protocol with endpoint discovery, retry with exponential backoff, and candidate message path aliasing. A self-contained, reusable component for integrating any MCP-compliant tool server.

file: internal/mcp/connector_httpsse.go ↗ | tags: #mcp-client #sse #retry-logic

Dynamically constructs system prompts from workspace files (skills, memory, geo codebook, etc.) with caching and file-change-based invalidation. Demonstrates a reusable pattern for document-aware agent context assembly.

file: internal/agent/context.go ↗ | tags: #context-builder #cache-invalidation #system-prompt
Last analyzed: 2026-08-12 04:59:01.503457
Next check: 2026-08-19 04:59:01.443265
$ submit: