Application framework for Go
Build Go applications,
not boilerplate
Develop standalone and web applications faster for modern Go projects.
package main import ( "os" "codnect.io/procyon") func main() { if err := procyon.Run(); err != nil { os.Exit(1) } }Why Procyon
Build Go applications with less wiring.
Procyon helps you create web and CLI applications faster by bringing components, dependency injection, configuration, lifecycle, and startup into one predictable runtime model.
Flexible for web and CLI
Build web services and CLI applications with the same framework runtime and application model. Start with the shape your project needs, then keep using the same concepts as it grows.
Productive by default
Register components, bind configuration, and let the runtime prepare the application around a small entrypoint. Less wiring in main means more room to focus on actual behavior.
Fast from boot to ready
Keep startup clear and lightweight while application pieces are discovered and wired by the framework. The runtime gives the application a direct path from boot to ready.
Composable with components
Use component registration and dependency injection to keep wiring predictable as the application grows. Controllers, services, and shared pieces can stay connected without manual setup everywhere.
Configurable across environments
Bind environment variables, config files, and property sources into typed options your services can use. Configuration stays external, structured, and easier to change between environments.
Managed through lifecycle hooks
Run startup, shutdown, and lifecycle hooks through one managed path instead of scattered application code. Framework-owned lifecycle points make behavior easier to follow and maintain.
Quick start
Create a working endpoint in minutes.
Add Procyon to a Go module, define a controller, map the route, register it as a component, and let the runtime start the app.
Install Procyon
Add the framework package to an existing Go module.
$ go get -i codnect.io/procyonCreate a web controller
Define a controller that will own a small HTTP endpoint.
type HelloController struct {}Â Â func NewHelloController() *HelloController { return &HelloController{}}Expose /hello
Map the route and keep the handler logic close to the endpoint.
func (h *HelloController) ConfigureEndpoints(endpoints http.Endpoints) { endpoints.MapGet("/hello", http.Handle(h.sayHello))}Â Â func (h *HelloController) sayHello(ctx *http.Context) error { response := ctx.Response() response.Writer().Write([]byte("Hello, World!")) return nil}Register the controller
Register the controller so the runtime can discover it.
func init() { component.Register(NewHelloController())}Start the app
Start the application from a small main function.
func main() { if err := procyon.Run(); err != nil { os.Exit(1) }}Runtime output
The runtime confirms the app is ready.
2026-07-20 10:29:21.174640INFOcodnect.io/procyon:Starting application using Go 1.24.0 (darwin/arm64)
2026-07-20 10:29:21.174912INFOcodnect.io/procyon:Running with Procyon v0.0.1-dev
2026-07-20 10:29:21.175024INFOcodnect.io/procyon:Started application in 0.000928666 seconds
Framework comparison
More than an HTTP router.
Gin, Echo, and Fiber are strong HTTP-focused choices. Procyon is designed as a broader application framework with infrastructure capabilities available out of the box.
| Capability | net/http | Gin | Echo | Fiber | Procyon |
|---|---|---|---|---|---|
| HTTP routing | Built-in | Built-in | Built-in | Built-in | Built-in |
| Middleware | Not built in | Built-in | Built-in | Built-in | Built-in |
| Dependency injection | Not built in | Not built in | Not built in | Not built in | Built-in |
| Typed configuration | Not built in | Not built in | Not built in | Not built in | Built-in |
| Application profiles | Not built in | Not built in | Not built in | Not built in | Built-in |
| Lifecycle management | Not built in | Not built in | Not built in | Not built in | Built-in |
| Graceful shutdown | Built-in | Not built in | Built-in | Built-in | Built-in |
| CLI foundation | Not built in | Not built in | Not built in | Not built in | Built-in |
Comparison focuses on built-in application capabilities. HTTP routers can often be extended through custom code or third-party packages.