Skip to content

mrchypark/axolotl

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

1 Commit
Β 
Β 

Repository files navigation

🦎 Axolotl

Pronounced /ˈæksΙ™ΛŒlΙ’tΙ™l/ β€” β€œAK-suh-lot-ul” Kubernetes-Native Secure Access Platform Inspired by Pangolin. Reimagined for the cloud-native world.


🚧 Project Status

Axolotl is an early-stage project and currently under active development. APIs, components, and behaviors may change frequently until the first stable release.


🧠 Overview

Axolotl is a lightweight, modular, and Kubernetes-native Secure Access Gateway. It honors Pangolin β€” and its companions Newt (client agent) and Gerbil (tunnel manager) β€” while reimagining their design for distributed, declarative, and regenerative cloud environments.

Axolotl provides:

  • Identity-aware tunneling
  • Zero-trust reverse proxying
  • Declarative access policies
  • Full Kubernetes-native deployment with Operators and CRDs

🌱 The Name

Axolotl is a Mexican salamander known for its regenerative ability β€” it can regrow limbs, organs, and even parts of its brain. Like its namesake, this project embodies resilience, adaptability, and self-healing, aligning naturally with Kubernetes’ philosophy.

β€œIt doesn’t metamorphose β€” it evolves continuously.” Axolotl symbolizes continuous regeneration of infrastructure through declarative design.


🧬 Architecture

High-Level Diagram

                  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                  β”‚         Axolotl Core         β”‚
                  β”‚ (Control Plane / Go + SQLite) β”‚
                  β”‚ - API / Policy Engine         β”‚
                  β”‚ - Config / CRD Controller     β”‚
                  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                 β”‚ gRPC / REST
 β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
 β”‚                                β”‚                                β”‚
 β”‚                                β”‚                                β”‚
 β”‚                   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”         β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
 β”‚                   β”‚   Axolotl Proxy    β”‚         β”‚   Axolotl Auth     β”‚
 β”‚                   β”‚ (Reverse Proxy)    β”‚         β”‚ (OIDC / Policy)    β”‚
 β”‚                   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜         β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
 β”‚                                β”‚                                β”‚
 β”‚                                β”‚                                β”‚
 β”‚                    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                       β”‚
 β”‚                    β”‚   Gerbil (Server)  β”‚ <── WireGuard Tunnel ─┼──┐
 β”‚                    β”‚  Tunnel Manager    β”‚                       β”‚  β”‚
 β”‚                    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                       β”‚  β”‚
 β”‚                                                                β”‚  β”‚
 β”‚                    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                       β”‚  β”‚
 β”‚                    β”‚   Newt (Client)    β”‚ <─── User / Device β”€β”€β”€β”˜  β”‚
 β”‚                    β”‚  Edge Agent        β”‚                          β”‚
 β”‚                    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                          β”‚
 β”‚                                                                β”‚
 β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Component Summary

Component Description Technology
Core Control plane managing configuration, CRDs, and policy orchestration Go + SQLite
Auth Identity provider integration (OIDC/OAuth2), token issuance Go
Proxy Reverse proxy & policy enforcement layer Go
Edge (Newt) Client-side agent establishing tunnels to Gerbil Go (external module)
Tunnel (Gerbil) WireGuard-based tunnel manager orchestrating secure links Go (external module)
UI Web console built with Nue.js for managing clusters, sites, and policies Nue.js
Operator Kubernetes Operator managing CRDs (AccessPolicy, TunnelSite, etc.) Go + Controller Runtime

🧩 Key Features

  • πŸ” Zero-Trust Access Control

    • Identity-aware authorization at every layer
    • Integrates OIDC / SSO providers via Axolotl Auth
  • ☁️ Kubernetes-Native Design

    • Deploys as CRDs, Operators, and Ingress resources
    • Reconciles automatically with your cluster’s state
  • βš™οΈ Composable MSA Architecture

    • Modular microservices for Core, Auth, Proxy, and Edge
    • gRPC-based internal communication
  • πŸ’Ύ Lightweight Persistence

    • Embedded SQLite for simplicity
    • Optional PostgreSQL adapter for larger deployments
  • πŸ’» Modern Dashboard

    • Built with Nue.js β€” minimal, reactive, and fast
    • Realtime policy insights, tunnel status, and resource maps
  • 🌐 Full Pangolin Compatibility

    • Supports existing Newt and Gerbil agents
    • Configurable endpoints and targets via YAML or CRDs

πŸš€ Quick Start

Prerequisites

  • Go 1.22+
  • Node.js 20+
  • Kubernetes 1.30+
  • Helm 3+

Deployment

git clone https://github.com/mrchypark/axolotl
cd axolotl

# Build backend
make build

# Deploy CRDs and operator
kubectl apply -f deploy/crds
helm install axolotl ./charts/axolotl

# Forward dashboard
kubectl port-forward svc/axolotl-ui 8080:80
open http://localhost:8080

🧱 Configuration Example

apiVersion: axolotl.io/v1
kind: TunnelSite
metadata:
  name: dev-lab
spec:
  client: newt
  server: gerbil
  mode: wireguard
  resources:
    - name: internal-api
      target: http://10.0.1.12:8080
      accessPolicy: allow-authenticated

πŸ”­ Roadmap

  • Full Helm chart + CRD set
  • WebSocket and TCP multiplexing
  • Axolotl Operator (Go)
  • Policy-as-Code (Rego)
  • Distributed tracing (OpenTelemetry)
  • Multi-cluster federation

❀️ A Tribute to Pangolin

β€œWe don’t replace Pangolin. We continue its evolution.”

Pangolin pioneered modular access control with Newt and Gerbil. Axolotl carries that legacy forward β€” embracing Kubernetes-native design, self-healing infrastructure, and regenerative security.


πŸ§‘β€πŸ’» Contributing

We welcome contributions! Fork, discuss, and submit PRs at GitHub Issues.


βš–οΈ License

MIT License Β© 2025 Chanyub Park


🧩 Summary Tagline

Axolotl β€” Regenerative, Declarative, Invisible Security for Kubernetes.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published