ichor

module
v0.0.0-...-d105bfc Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 16, 2026 License: Apache-2.0

README

Ultimate Software Design with Kubernetes

CircleCI Go Report Card go.mod Go version

InsightsSnapshot

Copyright 2018, 2019, 2020, 2021, 2022, 2023, 2024 Ardan Labs
hello@ardanlabs.com

My Information

Name:    Bill Kennedy  
Company: Ardan Labs  
Title:   Managing Partner  
Email:   bill@ardanlabs.com  
Twitter: goinggodotnet  

Description

"As a program evolves and acquires more features, it becomes complicated, with subtle dependencies between components. Over time, complexity accumulates, and it becomes harder and harder for programmers to keep all the relevant factors in their minds as they modify the system. This slows down development and leads to bugs, which slow development even more and add to its cost. Complexity increases inevitably over the life of any program. The larger the program, and the more people that work on it, the more difficult it is to manage complexity." - John Ousterhout

The service starter kit is a starting point for building production grade scalable web service applications that leverage the power of a Domain Driven, Data Oriented Architecture that can run in Kubernetes. The goal of this project is to provide a proven starting point that reduces the repetitive tasks required for a new project to be launched into production. It uses minimal dependencies, implements idiomatic code and follows Go best practices. Collectively, the project lays out everything logically to minimize guess work and enable engineers to quickly maintain a mental model for the project.

The class behind this starter kit teaches how to build production-level software in Go leveraging the power of a Domain Driven, Data Oriented Architecture that can run in Kubernetes. From the beginning, you will pair program with the instructor walking through the design philosophies and guidelines for building software in Go. With each new feature that is added to the project, you will learn how to deploy to and manage the Kubernetes environment used to run the project. The core of this class is to teach you and your team how to handle and reduce the spread of complexity in the systems you are building.

Learn more about the project:

Wiki | Course Outline | Class Schedule

Licensing

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

Learn More

Reach out about corporate training events, open enrollment live training sessions, and on-demand learning options.

Ardan Labs (www.ardanlabs.com)
hello@ardanlabs.com

Index

Installation

To clone the project, create a folder and use the git clone command. Then please read the makefile file to learn how to install all the tooling and docker images.

$ cd $HOME
$ mkdir code
$ cd code
$ git clone https://github.com/ardanlabs/service or git@github.com:ardanlabs/service.git
$ cd service

Create Your Own Version

If you want to create a version of the project for your own use, use the new gonew command.

$ go install golang.org/x/tools/cmd/gonew@latest

$ cd $HOME
$ mkdir code
$ cd code
$ gonew github.com/ardanlabs/service github.com/mydomain/myproject
$ cd myproject
$ go mod vendor

Now you have a copy with your own module name. Now all you need to do is initialize the project for git.

Running The Project

To run the project use the following commands.

# Install Tooling
$ make dev-gotooling
$ make dev-brew
$ make dev-docker

# Run Tests
$ make test

# Shutdown Tests
$ make test-down

# Run Project
$ make dev-up
$ make dev-update-apply
$ make token
$ export TOKEN=<COPY TOKEN>
$ make users

# Run Load
$ make load

# Run Tooling
$ make grafana
$ make statsviz

# Shut Project
$ make dev-down

Purchase Video

The entire training class has been recorded to be made available to those who can't have the class taught at their company or who can't attend a conference. This is the entire class material.

ardanlabs.com/education

Our Experience

We have taught Go to thousands of developers all around the world since 2014. There is no other company that has been doing it longer and our material has proven to help jump-start developers 6 to 12 months ahead of their knowledge of Go. We know what knowledge developers need in order to be productive and efficient when writing software in Go.

Our classes are perfect for intermediate-level developers who have at least a few months to years of experience writing code in Go. Our classes provide a very deep knowledge of the programming langauge with a big push on language mechanics, design philosophies and guidelines. We focus on teaching how to write code with a priority on consistency, integrity, readability and simplicity. We cover a lot about “if performance matters” with a focus on mechanical sympathy, data oriented design, decoupling and writing/debugging production software.

Our Teacher

William Kennedy (@goinggodotnet)

William Kennedy is a managing partner at Ardan Labs in Miami, Florida. Ardan Labs is a high-performance development and training firm working with startups and fortune 500 companies. He is also a co-author of the book Go in Action, the author of the blog GoingGo.Net, and a founding member of GoBridge which is working to increase Go adoption through diversity.

Video Training
Ultimate Go Video
Ardan Labs YouTube Channel

Blog
Going Go

Writing
Running MongoDB Queries Concurrently With Go
Go In Action

Articles
IT World Canada

Video
Golang Charlotte (2024) - Domain Driven, Data Oriented Architecture
GopherCon SG (2023) - K8s CPU Limits and Go
P99 Talk (2022) - Evaluating Performance In Go
GopherCon Europe (2022) - Practical Memory Profiling
Dgrpah Day (2021) - Getting Started With Dgraph and GraphQL
GDN Event #1 (2021) - GoBridge Needs Your Help
Training Within The Go Community (2019)
GopherCon Australia (2019) - Modules
Golab (2019) - You Want To Build a Web Service?
GopherCon Singapore (2019) - Garbage Collection Semantics
GopherCon India (2019) - Channel Semantics
GoWayFest Minsk (2018) - Profiling Web Apps
GopherCon Singapore (2018) - Optimizing For Correctness
GopherCon India (2018) - What is the Legacy You Are Leaving Behind
Code::Dive (2017) - Optimizing For Correctness
Code::Dive (2017) - Go: Concurrency Design
dotGo (2017) - Behavior Of Channels
GopherCon Singapore (2017) - Escape Analysis
Capital Go (2017) - Concurrency Design
GopherCon India (2017) - Package Oriented Design
GopherCon India (2015) - Go In Action
GolangUK (2016) - Dependency Management
GothamGo (2015) - Error Handling in Go
GopherCon (2014) - Building an analytics engine

Golang Charlotte (2023) - Domain Driven, Data Oriented Architecture with Bill Kennedy
Prague Meetup (2021) - Go Module Engineering Decisions
Practical Understanding Of Scheduler Semantics (2021)
Go Generics Draft Proposal (2020)
Hack Potsdam (2017) - Tech Talk with William Kennedy
Chicago Meetup (2016) - An Evening
Vancouver Meetup (2016) - Go Talk & Ask Me Anything With William Kennedy
Vancouver Meetup (2015) - Compiler Optimizations in Go
Bangalore Meetup (2015) - OOP in Go
GoSF Meetup - The Nature of Constants in Go
London Meetup - Mechanical Sympathy
Vancouver Meetup - Decoupling From Change

Podcasts
Ardan Labs Podcast: On Going Series
Encore, domain design in Go with Bill Kennedy
Mangtas Nation: A Golang Deep Dive with Bill Kennedy
Coding with Holger: Go with Bill Kennedy
Craft of Code: From Programming to Teaching Code with Bill Kennedy
GoTime: Design Philosophy
GoTime: Learning and Teaching Go
GoTime: Bill Kennedy on Mechanical Sympathy
GoTime: Discussing Imposter Syndrome
HelloTechPros: Your Tech Interviews are Scaring Away Brilliant People
HelloTechPros: The 4 Cornerstones of Writing Software

More About Go

Go is an open source programming language that makes it easy to build simple, reliable, and efficient software. Although it borrows ideas from existing languages, it has a unique and simple nature that make Go programs different in character from programs written in other languages. It balances the capabilities of a low-level systems language with some high-level features you see in modern languages today. This creates a programming environment that allows you to be incredibly productive, performant and fully in control; in Go, you can write less code and do so much more.

Go is the fusion of performance and productivity wrapped in a language that software developers can learn, use and understand. Go is not C, yet we have many of the benefits of C with the benefits of higher level programming languages.

The Ecosystem of the Go Programming Language - Henrique Vicente
The Why of Go - Carmen Andoh
Go Ten Years and Climbing - Rob Pike
The eigenvector of "Why we moved from language X to language Y" - Erik Bernhardsson
Learn More - Go Team
Simplicity is Complicated - Rob Pike
Getting Started In Go - Aarti Parikh

Minimal Qualified Student

The material has been designed to be taught in a classroom environment. The code is well commented but missing some contextual concepts and ideas that will be covered in class. Students with the following minimal background will get the most out of the class.

  • Studied CS in school or has a minimum of two years of experience programming full time professionally.
  • Familiar with structural and object oriented programming styles.
  • Has worked with arrays, lists, queues and stacks.
  • Understands processes, threads and synchronization at a high level.
  • Operating Systems
    • Has worked with a command shell.
    • Knows how to maneuver around the file system.
    • Understands what environment variables are.

Joining the Go Slack Community

We use a Slack channel to share links, code, and examples during the training. This is free. This is also the same Slack community you will use after training to ask for help and interact with may Go experts around the world in the community.

  1. Using the following link, fill out your name and email address: https://invite.slack.gobridge.org
  2. Check your email, and follow the link to the slack application.
  3. Join the training channel by clicking on this link: https://gophers.slack.com/messages/training/
  4. Click the “Join Channel” button at the bottom of the screen.

All material is licensed under the Apache License Version 2.0, January 2004.

Directories

Path Synopsis
api
cmd/services/auth/build/all
Package all binds all the routes into the specified app.
Package all binds all the routes into the specified app.
cmd/services/ichor/build/all
Package all binds all the routes into the specified app.
Package all binds all the routes into the specified app.
cmd/services/ichor/build/crud
Package crud binds the crud domain set of routes into the specified app.
Package crud binds the crud domain set of routes into the specified app.
cmd/services/ichor/build/reporting
Package reporting binds the reporting domain set of routes into the specified app.
Package reporting binds the reporting domain set of routes into the specified app.
cmd/services/metrics/collector
Package collector is a simple collector for
Package collector is a simple collector for
cmd/services/metrics/publisher
Package publisher manages the publishing of metrics.
Package publisher manages the publishing of metrics.
cmd/services/metrics/publisher/datadog
Package datadog provides support for publishing metrics to DD.
Package datadog provides support for publishing metrics to DD.
cmd/services/metrics/publisher/expvar
Package expvar manages the publishing of metrics to stdout.
Package expvar manages the publishing of metrics to stdout.
cmd/services/metrics/publisher/prometheus
Package prometheus provides suppoert for sending metrics to prometheus.
Package prometheus provides suppoert for sending metrics to prometheus.
cmd/services/workflow-worker command
Package main is the entry point for the workflow-worker service.
Package main is the entry point for the workflow-worker service.
cmd/tooling/admin command
This program performs administrative tasks for the garage sale service.
This program performs administrative tasks for the garage sale service.
cmd/tooling/admin/commands
Package commands contains the functionality for the set of commands currently supported by the CLI tooling.
Package commands contains the functionality for the set of commands currently supported by the CLI tooling.
cmd/tooling/logfmt command
This program takes the structured log output and makes it readable.
This program takes the structured log output and makes it readable.
domain/http/agentapi/catalogapi
Package catalogapi provides a single discovery endpoint that tells agents what configuration surfaces are available in the system, with links to CRUD endpoints, discovery endpoints, and constraint summaries.
Package catalogapi provides a single discovery endpoint that tells agents what configuration surfaces are available in the system, with links to CRUD endpoints, discovery endpoints, and constraint summaries.
domain/http/agentapi/chatapi
Package chatapi provides the POST /v1/agent/chat SSE endpoint that lets an LLM agent interact with the Ichor workflow system on behalf of an authenticated user.
Package chatapi provides the POST /v1/agent/chat SSE endpoint that lets an LLM agent interact with the Ichor workflow system on behalf of an authenticated user.
domain/http/authapi
Package authapi maintains the web based api for auth access.
Package authapi maintains the web based api for auth access.
domain/http/checkapi
Package checkapi maintains the web based api for system access.
Package checkapi maintains the web based api for system access.
domain/http/config/configschemaapi
Package configschemaapi provides HTTP endpoints for config JSONB schema discovery.
Package configschemaapi provides HTTP endpoints for config JSONB schema discovery.
domain/http/config/formfieldschemaapi
Package formfieldschemaapi provides HTTP endpoints for form field type discovery.
Package formfieldschemaapi provides HTTP endpoints for form field type discovery.
domain/http/core/userapi
Package userapi maintains the web based api for user access.
Package userapi maintains the web based api for user access.
domain/http/hr/homeapi
Package homeapi maintains the web based api for home access.
Package homeapi maintains the web based api for home access.
domain/http/labels/labelapi
Package labelapi exposes HTTP routes for the label subsystem: CRUD on the catalog, catalog print, transaction-label render+print, and a type-filtered list query.
Package labelapi exposes HTTP routes for the label subsystem: CRUD on the catalog, catalog print, transaction-label render+print, and a type-filtered list query.
domain/http/oauthapi
Package oauthapi maintains the web based api for oauth support.
Package oauthapi maintains the web based api for oauth support.
domain/http/paperwork/paperworkapi
Package paperworkapi maintains the web-based API for paperwork.
Package paperworkapi maintains the web-based API for paperwork.
domain/http/rawapi
Package rawapi provides an example of using a raw handler.
Package rawapi provides an example of using a raw handler.
domain/http/scenarios/scenarioapi
Package scenarioapi exposes HTTP routes for the scenario subsystem: CRUD on scenarios, active scenario query, Load (swap), and Reset.
Package scenarioapi exposes HTTP routes for the scenario subsystem: CRUD on scenarios, active scenario query, Load (swap), and Reset.
domain/http/workflow/actionapi
Package actionapi provides HTTP handlers for manual workflow action execution.
Package actionapi provides HTTP handlers for manual workflow action execution.
domain/http/workflow/alertapi
Package alertapi provides HTTP handlers for workflow alerts.
Package alertapi provides HTTP handlers for workflow alerts.
domain/http/workflow/alertws
Package alertws provides WebSocket endpoints for real-time alert delivery.
Package alertws provides WebSocket endpoints for real-time alert delivery.
domain/http/workflow/approvalapi
Package approvalapi provides HTTP handlers for workflow approval requests.
Package approvalapi provides HTTP handlers for workflow approval requests.
domain/http/workflow/edgeapi
Package edgeapi provides HTTP handlers for workflow action edge CRUD operations.
Package edgeapi provides HTTP handlers for workflow action edge CRUD operations.
domain/http/workflow/executionapi
Package executionapi provides HTTP handlers for workflow execution history endpoints.
Package executionapi provides HTTP handlers for workflow execution history endpoints.
domain/http/workflow/notificationsapi
Package notificationsapi provides the HTTP handler for the notifications summary endpoint.
Package notificationsapi provides the HTTP handler for the notifications summary endpoint.
domain/http/workflow/referenceapi
Package referenceapi provides HTTP layer endpoints for workflow reference data.
Package referenceapi provides HTTP layer endpoints for workflow reference data.
domain/http/workflow/ruleapi
Package ruleapi provides HTTP layer models and utilities for workflow automation rule CRUD operations.
Package ruleapi provides HTTP layer models and utilities for workflow automation rule CRUD operations.
domain/http/workflow/workflowsaveapi
Package workflowsaveapi provides HTTP handlers for transactional workflow save operations.
Package workflowsaveapi provides HTTP handlers for transactional workflow save operations.
sdk/http/apitest
Package apitest provides support for excuting api test logic.
Package apitest provides support for excuting api test logic.
sdk/http/debug
Package debug provides handler support for the debugging endpoints.
Package debug provides handler support for the debugging endpoints.
sdk/http/mid
Package mid contains the set of values the middleware handlers for using the http protocol.
Package mid contains the set of values the middleware handlers for using the http protocol.
sdk/http/mux
Package mux provides support to bind domain level routes to the application mux.
Package mux provides support to bind domain level routes to the application mux.
app
domain/checkapp
Package checkapp maintains the app layer api for the check domain.
Package checkapp maintains the app layer api for the check domain.
domain/core/userapp
Package userapp maintains the app layer api for the user domain.
Package userapp maintains the app layer api for the user domain.
domain/dataapp
Package data maintains the app layer api for the tablebuilder domain.
Package data maintains the app layer api for the tablebuilder domain.
domain/floor/directedworkapp
Package directedworkapp provides the application logic for the floor directed-work feature.
Package directedworkapp provides the application logic for the floor directed-work feature.
domain/formdata/formdataapp
Package formdataapp provides the app layer for dynamic form data operations.
Package formdataapp provides the app layer for dynamic form data operations.
domain/hr/homeapp
Package homeapp maintains the app layer api for the home domain.
Package homeapp maintains the app layer api for the home domain.
domain/inventory/scanapp
Package scanapp provides a scan resolver that maps a barcode to its inventory context.
Package scanapp provides a scan resolver that maps a barcode to its inventory context.
domain/labels/labelapp
Package labelapp provides the app-layer orchestration for label catalog lookups, catalog printing (POST /v1/labels/print), and on-the-fly transaction-label printing (POST /v1/labels/render-print).
Package labelapp provides the app-layer orchestration for label catalog lookups, catalog printing (POST /v1/labels/print), and on-the-fly transaction-label printing (POST /v1/labels/render-print).
domain/paperwork/paperworkapp
Package paperworkapp orchestrates cross-domain reads for paperwork rendering.
Package paperworkapp orchestrates cross-domain reads for paperwork rendering.
domain/sales/pickingapp
Package pickingapp provides the application layer for warehouse picking operations.
Package pickingapp provides the application layer for warehouse picking operations.
domain/scenarios/scenarioapp
Package scenarioapp provides the app-layer orchestration for scenario management: CRUD, active-scenario query, Load (swap scenario data), and Reset (re-apply current scenario).
Package scenarioapp provides the app-layer orchestration for scenario management: CRUD, active-scenario query, Load (swap scenario data), and Reset (re-apply current scenario).
domain/workflow/actionapp
Package actionapp provides the application layer for manual action execution.
Package actionapp provides the application layer for manual action execution.
domain/workflow/actionpermissionsapp
Package actionpermissionsapp provides the application layer for managing action permissions that control which roles can execute workflow actions manually.
Package actionpermissionsapp provides the application layer for managing action permissions that control which roles can execute workflow actions manually.
domain/workflow/executionapp
Package executionapp provides the application layer for workflow execution operations.
Package executionapp provides the application layer for workflow execution operations.
domain/workflow/ruleapp
Package ruleapp provides the application layer for automation-rule lifecycle operations whose business invariants must hold regardless of transport — today, the cascade-loop guard enforced when a rule is activated.
Package ruleapp provides the application layer for automation-rule lifecycle operations whose business invariants must hold regardless of transport — today, the cascade-loop guard enforced when a rule is activated.
domain/workflow/workflowsaveapp
Package workflowsaveapp provides the application layer for transactional workflow save operations.
Package workflowsaveapp provides the application layer for transactional workflow save operations.
sdk/apiconvention
Package apiconvention holds static, source-scanning guards that enforce cross-cutting API conventions documented in docs/layer-patterns.md.
Package apiconvention holds static, source-scanning guards that enforce cross-cutting API conventions documented in docs/layer-patterns.md.
sdk/auth
Package auth provides authentication and authorization support.
Package auth provides authentication and authorization support.
sdk/authclient
Package authclient provides support to access the auth service.
Package authclient provides support to access the auth service.
sdk/errs
Package errs provides types and support related to web error functionality.
Package errs provides types and support related to web error functionality.
sdk/formdataregistry
Package formdataregistry provides a registry for mapping entities to their CRUD operations.
Package formdataregistry provides a registry for mapping entities to their CRUD operations.
sdk/metrics
Package metrics constructs the metrics the application will track.
Package metrics constructs the metrics the application will track.
sdk/mid
Package mid provides app level middleware support.
Package mid provides app level middleware support.
sdk/query
Package query provides support for query paging.
Package query provides support for query paging.
business
domain/config/formbus
Package formbus provides business logic for form configuration management.
Package formbus provides business logic for form configuration management.
domain/config/formfieldbus
Package formfieldbus provides business logic for form field configuration management.
Package formfieldbus provides business logic for form field configuration management.
domain/config/pageactionbus
Package pageactionbus provides business logic for page action configuration management.
Package pageactionbus provides business logic for page action configuration management.
domain/config/settingsbus/levers
Package levers owns the canonical list of scan-discipline lever keys and their SMB defaults.
Package levers owns the canonical list of scan-discipline lever keys and their SMB defaults.
domain/config/settingsbus/stores/settingscache
Package settingscache wraps a settingsbus.Storer with an in-process snapshot cache.
Package settingscache wraps a settingsbus.Storer with an in-process snapshot cache.
domain/core/userbus
Package userbus provides business access to user domain.
Package userbus provides business access to user domain.
domain/core/userbus/stores/usercache
Package usercache contains user related CRUD functionality with caching.
Package usercache contains user related CRUD functionality with caching.
domain/core/userbus/stores/userdb
Package userdb contains user related CRUD functionality.
Package userdb contains user related CRUD functionality.
domain/hr/homebus
Package homebus provides business access to home domain.
Package homebus provides business access to home domain.
domain/hr/homebus/stores/homedb
Package homedb contains home related CRUD functionality.
Package homedb contains home related CRUD functionality.
domain/labels/labelbus
Package labelbus provides business access to label catalog and printing.
Package labelbus provides business access to label catalog and printing.
domain/labels/labelbus/stores/labeldb
Package labeldb provides the Postgres implementation of labelbus.Storer.
Package labeldb provides the Postgres implementation of labelbus.Storer.
domain/labels/labelbus/tcpprint
Package tcpprint writes ZPL bytes directly to a Zebra-compatible TCP printer on port 9100 (PDL-datastream).
Package tcpprint writes ZPL bytes directly to a Zebra-compatible TCP printer on port 9100 (PDL-datastream).
domain/labels/labelbus/zpl
Package zpl contains ZPL template functions for printable labels.
Package zpl contains ZPL template functions for printable labels.
domain/paperwork/pdf
Package pdf renders paperwork PDFs (pick sheets, receive covers, transfer sheets) for floor-worker workflows.
Package pdf renders paperwork PDFs (pick sheets, receive covers, transfer sheets) for floor-worker workflows.
domain/sales/ordersbus/types
Package types provides value objects for the orders domain.
Package types provides value objects for the orders domain.
domain/scenarios/scenariobus
Package scenariobus owns three tables — scenarios, scenario_fixtures, scenarios_active — as one aggregate.
Package scenariobus owns three tables — scenarios, scenario_fixtures, scenarios_active — as one aggregate.
domain/scenarios/scenariobus/stores/scenariodb
Package scenariodb provides the Postgres implementation of scenariobus.Storer.
Package scenariodb provides the Postgres implementation of scenariobus.Storer.
domain/scenarios/scenariobus/yamlload
Package yamlload parses and validates scenario fixture YAML files.
Package yamlload parses and validates scenario fixture YAML files.
domain/workflow/actionpermissionsbus
Package actionpermissionsbus provides business logic for managing action permissions that control which roles can execute workflow actions manually.
Package actionpermissionsbus provides business logic for managing action permissions that control which roles can execute workflow actions manually.
domain/workflow/actionpermissionsbus/stores/actionpermissionsdb
Package actionpermissionsdb provides database operations for workflow action permissions.
Package actionpermissionsdb provides database operations for workflow action permissions.
domain/workflow/alertbus
Package alertbus provides the core business logic for workflow alerts.
Package alertbus provides the core business logic for workflow alerts.
domain/workflow/alertbus/stores/alertdb
Package alertdb provides database operations for workflow alerts.
Package alertdb provides database operations for workflow alerts.
domain/workflow/approvalrequestbus
Package approvalrequestbus provides business logic for workflow approval requests.
Package approvalrequestbus provides business logic for workflow approval requests.
domain/workflow/approvalrequestbus/stores/approvalrequestdb
Package approvalrequestdb provides database operations for workflow approval requests.
Package approvalrequestdb provides database operations for workflow approval requests.
sdk/agenttools
Package agenttools defines the tool catalog and executor that lets an LLM agent interact with the Ichor REST API.
Package agenttools defines the tool catalog and executor that lets an LLM agent interact with the Ichor REST API.
sdk/calculations
Package calculations provides financial calculation utilities for order processing.
Package calculations provides financial calculation utilities for order processing.
sdk/dbtest
Package dbtest contains supporting code for running tests that hit the DB.
Package dbtest contains supporting code for running tests that hit the DB.
sdk/delegate
Package delegate provides the ability to make function calls between different domain packages when an import is not possible.
Package delegate provides the ability to make function calls between different domain packages when an import is not possible.
sdk/llm
Package llm defines a vendor-neutral interface for large language model providers.
Package llm defines a vendor-neutral interface for large language model providers.
sdk/llm/claude
Package claude implements the llm.Provider interface using the Anthropic SDK.
Package claude implements the llm.Provider interface using the Anthropic SDK.
sdk/llm/gemini
Package gemini implements the llm.Provider interface using Google Gemini's OpenAI-compatible chat completions endpoint.
Package gemini implements the llm.Provider interface using Google Gemini's OpenAI-compatible chat completions endpoint.
sdk/llm/ollama
Package ollama implements the llm.Provider interface using Ollama's OpenAI-compatible chat completions API.
Package ollama implements the llm.Provider interface using Ollama's OpenAI-compatible chat completions API.
sdk/llm/openaicompat
Package openaicompat provides shared types and helpers for LLM providers that use the OpenAI-compatible chat completions API (e.g.
Package openaicompat provides shared types and helpers for LLM providers that use the OpenAI-compatible chat completions API (e.g.
sdk/migrate
Package migrate contains the database schema, migrations and seeding data.
Package migrate contains the database schema, migrations and seeding data.
sdk/order
Package order provides support for describing the ordering of data.
Package order provides support for describing the ordering of data.
sdk/outbox
Package outbox implements the transactional outbox for cascade delegate events (F2).
Package outbox implements the transactional outbox for cascade delegate events (F2).
sdk/page
Package page provides support for query paging.
Package page provides support for query paging.
sdk/seedid
Package seedid provides deterministic UUID v5 derivation for test seed data.
Package seedid provides deterministic UUID v5 derivation for test seed data.
sdk/sqldb
Package sqldb provides support for access the database.
Package sqldb provides support for access the database.
sdk/sqldb/dbarray
Package dbarray provides support for database array types.
Package dbarray provides support for database array types.
sdk/tablebuilder
Package tablebuilder provides chart data transformation logic
Package tablebuilder provides chart data transformation logic
sdk/toolcatalog
Package toolcatalog provides a single source of truth for tool names and their group membership.
Package toolcatalog provides a single source of truth for tool names and their group membership.
sdk/toolindex
Package toolindex provides embedding-based tool retrieval (Tool RAG) for the agent chat system.
Package toolindex provides embedding-based tool retrieval (Tool RAG) for the agent chat system.
sdk/unitest
Package unitest provides support for excuting unit test logic.
Package unitest provides support for excuting unit test logic.
sdk/workflow
Package workflow provides workflow automation capabilities.
Package workflow provides workflow automation capabilities.
sdk/workflow/fieldschema
Package fieldschema provides a static registry of known enum field schemas for workflow entity fields.
Package fieldschema provides a static registry of known enum field schemas for workflow entity fields.
sdk/workflow/protected
Package protected holds the registry of (entity, field) pairs that the generic raw-SQL workflow actions (update_field, create_entity, transition_status) must NOT write directly.
Package protected holds the registry of (entity, field) pairs that the generic raw-SQL workflow actions (update_field, create_entity, transition_status) must NOT write directly.
sdk/workflow/temporal/stores/edgedb
Package edgedb implements the EdgeStore interface for loading graph definitions from PostgreSQL.
Package edgedb implements the EdgeStore interface for loading graph definitions from PostgreSQL.
sdk/workflow/workflowactions
business/sdk/workflow/workflowactions/register.go
business/sdk/workflow/workflowactions/register.go
sdk/workflow/workflowactions/control
Package control provides control flow actions for workflow execution.
Package control provides control flow actions for workflow execution.
sdk/workflowdomains
Package workflowdomains is the single source of truth mapping domain buses to the workflow delegate subscriber.
Package workflowdomains is the single source of truth mapping domain buses to the workflow delegate subscriber.
foundation
docker
Package docker provides support for starting and stopping docker containers for running tests.
Package docker provides support for starting and stopping docker containers for running tests.
keystore
Package keystore implements the auth.KeyLookup interface.
Package keystore implements the auth.KeyLookup interface.
logger
Package logger provides support for initializing the log system.
Package logger provides support for initializing the log system.
otel
Package otel provides otel support.
Package otel provides otel support.
rabbitmq
foundation/rabbitmq/client.go
foundation/rabbitmq/client.go
temporal
Package temporal provides support for starting and stopping Temporal containers for running tests.
Package temporal provides support for starting and stopping Temporal containers for running tests.
web
Package web contains a small web framework extension.
Package web contains a small web framework extension.
websocket
Package websocket provides a generic WebSocket connection registry (Hub) and client wrapper for real-time communication.
Package websocket provides a generic WebSocket connection registry (Hub) and client wrapper for real-time communication.
worker
Package worker manages a set of registered jobs that execute on demand.
Package worker manages a set of registered jobs that execute on demand.
mcp
cmd/ichor-mcp command
Command ichor-mcp runs an MCP (Model Context Protocol) server that wraps the Ichor REST API, providing discovery, read, and search tools for LLM agents.
Command ichor-mcp runs an MCP (Model Context Protocol) server that wraps the Ichor REST API, providing discovery, read, and search tools for LLM agents.
internal/client
Package client provides an HTTP client for the Ichor REST API.
Package client provides an HTTP client for the Ichor REST API.
internal/prompts
Package prompts provides MCP prompts for guided workflow, page, and form building.
Package prompts provides MCP prompts for guided workflow, page, and form building.
internal/resources
Package resources provides MCP resource handlers that expose Ichor configuration data as addressable resources.
Package resources provides MCP resource handlers that expose Ichor configuration data as addressable resources.
internal/tools
Package tools provides MCP tool handlers that wrap the Ichor REST API.
Package tools provides MCP tool handlers that wrap the Ichor REST API.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL