run-kit
A remote, phone-first console for your tmux — agent-agnostic, no database. Spawn and watch coding agents in parallel wo…
fount is a programmable, standardised, modular, customisable agent runtime platform that loads various parts to provide services.
For code-related questions, see deepwiki.
The name fount is all lowercase—it's fount, not Fount.
Use OpenClaw when you:
Use ChatGPT or similar online LLM chat platforms when you:
Use character.ai or similar online LLM character role-play platforms when you:
Use SillyTavern when you:
Use SSP when you:
Imagination, Given Voice.
fount is a modern, scalable AI agent runtime environment.
We believe that highly efficient productivity tools and immersive emotional interaction are not mutually exclusive. fount is a bridge: by day, it can be the capable assistant helping you write complex code and summarise meeting minutes; by night, it can be a digital confidant that understands your emotions and resonates with you.
After of dedicated refinement, fueled by the passion of
and a vibrant community of
, fount is now a mature, stable, and continuously evolving AI interaction platform.
If you wish to configure, set up, and get started from scratch, you can refer to the community tutorial fount Guide for Dummies from Scratch (the tutorial is in Chinese, non-Chinese users can use the browser translation function to read it).
fount transforms interaction into productivity assets. Everything is drag-and-drop, everything is a file, and logic is driven by code.



No longer just Markdown highlighting. In fount, the code blocks sent by the character are live.

fount's project architecture is designed with full consideration for developers' habits. Want to know the project repository architecture? Check out DeepWiki!
When work is done, fount provides a connection that transcends the ordinary. We discard the stiffness of traditional tools, pursuing a natural, fluid, and deeply "high-fidelity" interaction.
Seamless Conversations, Anytime, Anywhere A chat started on a computer can seamlessly continue on a mobile phone or tablet. fount keeps your conversations synchronised, ensuring you stay closely connected with your character no matter where you are.
Expressive, Immersive Chat Leveraging the power of HTML, fount allows the character to express itself through rich text, images, and even interactive elements, making every conversation vivid and profound.
A Gathering of Minds: Native Group Chat
Invite multiple characters to join the same conversation and witness their dynamic and engaging interactions, whether for a work brainstorm or a story enactment between the characters.

Beautiful, Customisable Interface
Choose from over 30 stunning themes, or create your own colours. fount is your exclusive canvas.

Available Everywhere fount runs seamlessly on Windows, macOS, Linux, and even Android, meeting your different needs through direct installation or the flexibility of Docker.
Unconstrained AI Source Integration: Embrace the Infinite
fount offers unparalleled choice and flexibility in connecting AI sources. Custom JavaScript code in the AI Source Generator allows you to connect to any AI source – OpenAI, Claude, Atlas Cloud, Evolink, OpenRouter, NovelAI, Horde, Ooba, Tabby, Mistral... In the flow of code, you can carefully design complex regular expressions, call extensive API libraries, and embed multimedia resources. fount also natively supports the creation of API Pools to achieve intelligent request routing. The logic of communication follows your will, shaped by the power of code.

If you feel lost in the sea of agents, or are seeking forgotten stories, our vibrant and friendly community awaits your arrival. It is a haven for like-minded individuals, where developers and creators share their wisdom and creations.
fount strives to weave characters into the very fabric of your life, offering companionship and support that transcends the screen.
Telegram/Discord Integration
Connect your characters to Telegram or Discord communities through built-in Bot Shells, making them living members of your circles.

Browser Integration
Integrate characters into browser extensions, allowing them to see and modify the content of pages in your browser, truly realizing "surfing the web with AI".
You can say to your character: Hey XX, help me change the color of this page and add some decorations.

IDE Integration
Integrate characters into IDEs like JetBrains, neovim, Zed, etc., allowing them to provide context-aware assistance and suggestions while you write code, just like Cursor Agent or GitHub Copilot.

Terminal Serenity (with fount-pwsh)
When a terminal command falters, let your character offer a quiet word of guidance, easing the solitude of the digital world.

Limitless Shell Extensions With a touch of programming skill, craft your own fount Shells, extending your characters' reach to any corner you can imagine.
For the creator, fount offers a clearer path to bringing your AI characters to life.
Revolutionary AI-Assisted Creation Describe your character in a single sentence, and our intelligent AI assistant will craft a fully realised persona. This simplifies the initial setup, allowing you to focus on refining and interacting with your creation.
The Magic of Code, Easier Than You Imagine In fount, code is a form of modern magic. With the gentle guidance of our community and the illuminating aid of AI, learning it is surprisingly easy. You'll find that defining character logic with code can be an intuitive and maintainable way to craft characters whose responses are woven from your own logic.
Start with Ready-Made Magic: A Treasure Trove of Templates fount's community provides a wealth of pre-crafted character and persona templates. They act as "living blueprints," easy to adapt and customise, providing a fantastic starting point.
Embedded Resources
Weave images, audio, and other resources directly into your characters, making their presence all the more tangible.

Continuous Integration
Use fount-charCI to safeguard your character development. It automatically runs tests on commit and reports issues in real-time.

Legacy Compatibility fount embraces the past, offering compatibility modules to run SillyTavern and Risu character cards (though migration of existing characters is not supported).
fount is built upon a robust and scalable architecture. The backend leverages the power and speed of Deno, with Express for efficient routing. The frontend is crafted with HTML, CSS, and JavaScript for an intuitive and appealing interface.
In the world of fount, modularity reigns supreme. A rich ecosystem of parts intertwines to create the tapestry of your experience. All of these can be effortlessly installed, expanded, and customised by users.
Tip
If you wish to configure, set up, and get started from scratch, you can refer to the community tutorial fount Guide for Dummies from Scratch (the tutorial is in Chinese, non-Chinese users can use the browser translation function to read it).
Embark on your journey with fount, a stable and reliable platform. A few simple clicks or commands, and the world of fount unfolds.
Caution
In the world of fount, characters can freely execute JavaScript commands, granting them powerful capabilities. Therefore, please choose the characters you trust with the same care you would in real life to ensure the safety of your local files.
# If needed, define the environment variable $FOUNT_DIR to specify the fount directory
INSTALLED_PACKAGES="${FOUNT_AUTO_INSTALLED_PACKAGES:-}"
install_package() { _command_name="$1"; _package_list=${2:-$_command_name}; _has_sudo=""; _installed_pkg_name="" ; if command -v "$_command_name" >/dev/null 2>&1; then return 0; fi; if [ "$(id -u)" -ne 0 ] && command -v sudo >/dev/null 2>&1; then _has_sudo="sudo"; fi; for _package in $_package_list; do if command -v apt-get >/dev/null 2>&1; then $_has_sudo apt-get update -y; $_has_sudo apt-get install -y "$_package"; if command -v "$_command_name" >/dev/null 2>&1; then _installed_pkg_name="$_package"; break; fi; fi; if command -v pacman >/dev/null 2>&1; then $_has_sudo pacman -Syy --noconfirm; $_has_sudo pacman -S --needed --noconfirm "$_package"; if command -v "$_command_name" >/dev/null 2>&1; then _installed_pkg_name="$_package"; break; fi; fi; if command -v dnf >/dev/null 2>&1; then $_has_sudo dnf install -y "$_package"; if command -v "$_command_name" >/dev/null 2>&1; then _installed_pkg_name="$_package"; break; fi; fi; if command -v yum >/dev/null 2>&1; then $_has_sudo yum install -y "$_package"; if command -v "$_command_name" >/dev/null 2>&1; then _installed_pkg_name="$_package"; break; fi; fi; if command -v zypper >/dev/null 2>&1; then $_has_sudo zypper install -y --no-confirm "$_package"; if command -v "$_command_name" >/dev/null 2>&1; then _installed_pkg_name="$_package"; break; fi; fi; if command -v apk >/dev/null 2>&1; then if [ "$(id -u)" -eq 0 ]; then apk add --update "$_package"; else $_has_sudo apk add --update "$_package"; fi; if command -v "$_command_name" >/dev/null 2>&1; then _installed_pkg_name="$_package"; break; fi; fi; if command -v brew >/dev/null 2>&1; then if ! brew list --formula "$_package"; then brew install "$_package"; fi; if command -v "$_command_name" >/dev/null 2>&1; then _installed_pkg_name="$_package"; break; fi; fi; if command -v pkg >/dev/null 2>&1; then pkg install -y "$_package"; if command -v "$_command_name" >/dev/null 2>&1; then _installed_pkg_name="$_package"; break; fi; fi; if command -v snap >/dev/null 2>&1; then $_has_sudo snap install "$_package"; if command -v "$_command_name" >/dev/null 2>&1; then _installed_pkg_name="$_package"; break; fi; fi; done; if command -v "$_command_name" >/dev/null 2>&1; then case ";$FOUNT_AUTO_INSTALLED_PACKAGES;" in *";$_installed_pkg_name;"*) ;; *) if [ -z "$FOUNT_AUTO_INSTALLED_PACKAGES" ]; then FOUNT_AUTO_INSTALLED_PACKAGES="$_installed_pkg_name"; else FOUNT_AUTO_INSTALLED_PACKAGES="$FOUNT_AUTO_INSTALLED_PACKAGES;$_installed_pkg_name"; fi; ;; esac; return 0; else echo "Error: Failed to install '$_command_name' from any source." >&2; return 1; fi; }
install_package "bash" "bash gnu-bash"; install_package "curl"
export FOUNT_AUTO_INSTALLED_PACKAGES="$INSTALLED_PACKAGES"
curl -fsSL https://steve02081504.github.io/fount/install.sh | bash
. "$HOME/.profile"
Should you wish to pause, to gather your thoughts before the grand adventure (a dry run):
INSTALLED_PACKAGES="${FOUNT_AUTO_INSTALLED_PACKAGES:-}"
install_package() { _command_name="$1"; _package_list=${2:-$_command_name}; _has_sudo=""; _installed_pkg_name="" ; if command -v "$_command_name" >/dev/null 2>&1; then return 0; fi; if [ "$(id -u)" -ne 0 ] && command -v sudo >/dev/null 2>&1; then _has_sudo="sudo"; fi; for _package in $_package_list; do if command -v apt-get >/dev/null 2>&1; then $_has_sudo apt-get update -y; $_has_sudo apt-get install -y "$_package"; if command -v "$_command_name" >/dev/null 2>&1; then _installed_pkg_name="$_package"; break; fi; fi; if command -v pacman >/dev/null 2>&1; then $_has_sudo pacman -Syy --noconfirm; $_has_sudo pacman -S --needed --noconfirm "$_package"; if command -v "$_command_name" >/dev/null 2>&1; then _installed_pkg_name="$_package"; break; fi; fi; if command -v dnf >/dev/null 2>&1; then $_has_sudo dnf install -y "$_package"; if command -v "$_command_name" >/dev/null 2>&1; then _installed_pkg_name="$_package"; break; fi; fi; if command -v yum >/dev/null 2>&1; then $_has_sudo yum install -y "$_package"; if command -v "$_command_name" >/dev/null 2>&1; then _installed_pkg_name="$_package"; break; fi; fi; if command -v zypper >/dev/null 2>&1; then $_has_sudo zypper install -y --no-confirm "$_package"; if command -v "$_command_name" >/dev/null 2>&1; then _installed_pkg_name="$_package"; break; fi; fi; if command -v apk >/dev/null 2>&1; then if [ "$(id -u)" -eq 0 ]; then apk add --update "$_package"; else $_has_sudo apk add --update "$_package"; fi; if command -v "$_command_name" >/dev/null 2>&1; then _installed_pkg_name="$_package"; break; fi; fi; if command -v brew >/dev/null 2>&1; then if ! brew list --formula "$_package"; then brew install "$_package"; fi; if command -v "$_command_name" >/dev/null 2>&1; then _installed_pkg_name="$_package"; break; fi; fi; if command -v pkg >/dev/null 2>&1; then pkg install -y "$_package"; if command -v "$_command_name" >/dev/null 2>&1; then _installed_pkg_name="$_package"; break; fi; fi; if command -v snap >/dev/null 2>&1; then $_has_sudo snap install "$_package"; if command -v "$_command_name" >/dev/null 2>&1; then _installed_pkg_name="$_package"; break; fi; fi; done; if command -v "$_command_name" >/dev/null 2>&1; then case ";$FOUNT_AUTO_INSTALLED_PACKAGES;" in *";$_installed_pkg_name;"*) ;; *) if [ -z "$FOUNT_AUTO_INSTALLED_PACKAGES" ]; then FOUNT_AUTO_INSTALLED_PACKAGES="$_installed_pkg_name"; else FOUNT_AUTO_INSTALLED_PACKAGES="$FOUNT_AUTO_INSTALLED_PACKAGES;$_installed_pkg_name"; fi; ;; esac; return 0; else echo "Error: Failed to install '$_command_name' from any source." >&2; return 1; fi; }
install_package "bash" "bash gnu-bash"; install_package "curl"
export FOUNT_AUTO_INSTALLED_PACKAGES="$INSTALLED_PACKAGES"
curl -fsSL https://steve02081504.github.io/fount/install.sh | bash -s init
. "$HOME/.profile"
Direct and Uncomplicated (Recommended): Download the exe file from Releases and run it.
The Power of PowerShell:
# If needed, define the environment variable $env:FOUNT_DIR to specify the fount directory irm https://steve02081504.github.io/fount/install.ps1 | iex
For a dry run:
$scriptContent = Invoke-RestMethod https://steve02081504.github.io/fount/install.ps1
Invoke-Expression "function fountInstaller { $scriptContent }"
fountInstaller init
If you already have Git installed, embracing fount is as simple as running a script.
run.bat../run.sh.docker pull ghcr.io/steve02081504/fount
fount remove
Should you encounter any difficulties on your journey, please reach out. We are here to help and are committed to resolving most issues within 10 minutes to 24 hours.
Your voice will be heard. Simply restart fount, and the shadows will dissipate.
The world of fount is more than words and code; it's a feast for the eyes and an invitation to connect. We have prepared exquisite badges and convenient links to make your fount parts shine and allow others to easily discover your masterpieces.
You can proudly display this badge in your repository or anywhere you wish to showcase your work. Find the SVG files of the fount logo here.
[](https://github.com/topics/fount-repo)
[](https://github.com/topics/fount-character)
| Colour Format | Code |
|---|---|
| HEX | #0e3c5c |
| RGB | rgb(14, 60, 92) |
| HSL | hsl(205, 74%, 21%) |
You can also use the Badge Adder to add the fount logo to any shields.io badge.
Imagine others installing your creations into their fount world with a single click. Simply combine your part's ZIP or Git repository link with fount's protocol link.
https://steve02081504.github.io/fount/protocol?url=fount://run/shells/install/install;<Your_Part_URL>
fount's frontend is woven from modern web technologies, but not all browsers resonate perfectly with its soul. For the most serene and fluid experience, we recommend companions that are in harmony with fount's rhythm:
Yet, some browsers walk a different path, and their encounter with fount may carry a note of dissonance:
Mozilla Firefox: It is like a stubborn wanderer, often unhurried in its embrace of new technologies, sometimes choosing to linger in the past forever. This insistence, however, can lead to certain regrets:
speculationrules, each of fount's cold starts and protocol handlings will be 1-2 seconds slower than they should be—moments quietly stolen from you.anchor positioning will leave some pages with a touch of imperfect dust, spoiling a mood that was meant to be pure.blocking="render" may cause fount pages to flicker upon loading, hurting your eyes.Apple Safari: Its support for "emerging" (several years old) web standards might be a tad better than Firefox's, but not by much.
speculationrules, which means fount's startup will still carry a slight delay, wasting your precious moments.Brave: While based on Chromium, its formidable shield of privacy can sometimes inadvertently obscure some of fount's light, affecting the normal operation of certain features.
Beyond the whispers of AI, fount offers a deeper connection—the artisan's touch. Within our community, you'll find a wealth of pre-crafted character and persona templates, each a carefully sculpted foundation awaiting your unique vision to awaken it.
fount empowers you to create and interact with AI characters in a way that feels natural, immersive, and deeply personal. Whether you're a seasoned creator or just beginning your journey, fount welcomes you.
Join our welcoming community and discover the magic of breathing life into your imagination, supported by a mature platform and a dedicated team.
more like this
search projects, people, and tags