![]()
Enkaidu
Enkaidu is your transparent second-in-command(line) for coding and creativity. Using your preferred local AI large language models or trusted sovereign servers, Enkaidu is designed to assist you with writing & maintaining your code, documentation, or your next great novel.
Enkaidu 0.9.14 is available! This release grants network access inside the cordon per command (
network_allowed_commands), adds host policies (allowed_hosts,denied_hosts,allow_private_hosts) to the Web tools, and gives the markdown fetch tool real HTML parsing with atruncatedflag. See what’s new in 0.9.14 →
Here’s a quick demo that shows how Enkaidu reveals what’s happening under the hood as you work with the AI model.
Quick start in a container?
-
Configure
This is for use with LM Studio. Find quick config for Ollama here, and Azure OpenAI here
Create a file called
enkaidu.ymlin your working folder with the following content:session: model: qwen3 # <--- auto_load: toolsets: - DateAndTime llms: my_lmstudio: provider: openai env: OPENAI_ENDPOINT: 'http://<HOSTNAME>.local:1234' OPENAI_API_KEY: n/a models: - name: qwen3 # <--- model: qwen/qwen3-4b # <---⚠️ Replace
<HOSTNAME>with your host name. Dont uselocalhostas that refers to the container itself. -
Run Enkaidu
The commands below use
podman; however you can usedockeras easily.From your terminal
Enabling host networking so you can access your local models, run the following to get the terminal UX:
podman run --rm -it --add-host=<HOSTNAME>.local:host-gateway \ -v $(pwd):/workspace -w /workspace nogginly/enkaiduFor the web UX
Run the following for the built-in web UI experience:
podman run --rm -it --add-host=<HOSTNAME>.local:host-gateway \ -p 8765:8765/tcp -v $(pwd):/workspace -w /workspace \ nogginly/enkaidu --webuiLaunch
http://localhost:8765from your browser.
-
Self-sovereign
Enkaidu works with your locally-hosted AI models (or secure soverein servers of your choice), keeping all your inference under your control.
-
Enforced system configuration
Enkaidu lets you define a central, locked-down system configuration that, if present, is enforced for all users.
-
Read-only mode
Enkaidu can be put into read-only mode where only tools that cannot make local changes are available for use by the LLMs.
-
Cordon for shell commands
Enkaidu supports running shell commands within a “cordon” using platform-specific sandboxing tools for macOS (
sandbox-exec) and Linux (bubblewrap). -
Network access controls
Inside the cordon, network access is granted per shell command , and the Web tools take host policies deciding exactly which servers they can reach.
-
Macros
Enkaidu lets you define named, parameterized macros in your config and invoke them right from the prompt. With arguments substituted on invocation and macros that can call other macros, your most-repeated workflows are one macro call away.
-
Conditional commands
Enkaidu supports conditional continuation commands that can be used by macros to exit when certain conditions are met, including checking global state keys.
-
Global in-memory state
Enkaidu supports an in-memory global name-spaced key/value state that can be accessed by the models via tool calling to set and get properties.
-
Customizable
Enkaidu lets you define your own system prompts, parameterized custom prompts, and macros to suit your workflow.
-
Transparent
Enkaidu doesn’t hide any of the interaction between you and your AI model, show when tools are used or MCP server calls are made, and more.
-
Terminal first, GUI included
Enkaidu is first and foremost a terminal app, letting you work in your console. Enkaidu also supports a built-in Web UI for when you want a graphical content experience.
-
Tool-calling
Enkaidu includes system tools and built-in tools that the AI models can call, and lets you choose when you make them available to the AI model.
-
MCP Client
Enkaidu supports calling MCP servers (over HTTP) for tools and prompts, letting you connect to them when you need them.
-
Compatibility
Enkaidu works with any AI inference server that supports the Open AI “chat completion” API. We’ve used it with local models via LM Studio, Llama CPP, Ollama, and cloud models via Azure Open AI.
Questions?
-
Why did you make it?
AI “feels like” magic and I wanted to figure out how using LLMs to build applications work by using the various protocols from scratch.
-
Who is it for?
Enkaidu is for anyone who is curious about using an AI assistant and engaging with the AI models in a deeper way than just typing prompts and “vibing.”
-
Where can I use it?
Enkaidu is a command-line app that runs in the terminal, and can be run locally or remotely as long as you can connect to your AI model.
-
What does it cost?
Enkaidu is free and open source under the
Mozilla Public License Version 2.0. The code is currently in a private repo until I’m ready to start getting the inevitable “feedback.” -
Can I use it with [NAME YOUR] SaaS AI provider?
Enkaidu uses the Open AI chat completion protocol, so it can be used with Chat GPT. It “should” work with any SaaS AI providers who support the protocol, and it “should” work via any Open AI protocol proxies.