Agent-Native Agent plugin
Agent-Native Agent (ANA)
A Claude Code plugin and self-hosted app: a dashboard and chat with a coding agent that rewrites the app while you use it
- 130 ★ on the repository
- Last commit
- AGPL-3.0
Broad access
Why this level
- The agent edits the running app's code and runs terminal commands through chat
- The server pastes text into a tmux terminal, and an open port would give an outsider access to the agent
- The install scripts add system packages through brew, apt, dnf or pacman
Install
- Works in
In your terminal, with SkillFoxx CLI
npx skillfoxx add plugins/agent-native-agent-anaDetects the agents on your machine, shows the access level and pins the version.
Other ways to install
Access and checks
How we reviewBroad accessThe tool can change data, run commands or handle secrets.
- The agent edits the running app's code and runs terminal commands through chat
- The server pastes text into a tmux terminal, and an open port would give an outsider access to the agent
- The install scripts add system packages through brew, apt, dnf or pacman
This is third-party code. Review the repository files before installing.
What it does
ANA is an app you run yourself and operate through a browser. On screen is a live dashboard with a chat to a coding agent beside it. The `node server.js` server on port 8809 pastes chat messages into the tmux pane where Claude Code or Codex runs, and every 300 ms reads the pane back to the browser over SSE. There is no MCP, no bridge and no hooks. When a new behavior is needed, the agent posts a proposal with a before-and-after card. After approval the server applies the change, bumps the version number, and every device refreshes. The base edition has six tabs: PRD, Work, Knowledge, Requests, Evolve and Update. The repository is packaged as a Claude Code plugin. Its skills install the environment and run ANA (`install`), attach the dashboard and chat to your web service (`ana`), update an already deployed copy (`ana-update`) and keep a queue of requests to the human (`agent-requests`). The commercial Pro edition adds a knowledge graph, roles and several workspaces.
Who it is for. Developers of internal tools who want to run their own app through a chat with an agent and watch its state on a dashboard.
Good fit when
- An internal service is needed quickly and is easier to build by talking than through releases and deploys
- An existing web service needs an agent chat and a status panel through the `ana` skill
- Agent decisions must be approved by hand: data edits arrive as cards on the Requests tab
- The app was deployed long ago and needs new upstream features pulled in through the update skill
- You need to work with the agent from a phone: the interface is built for the mobile screen as well
Not a fit when
- You need the usual release and review flow: here the agent changes the app while it runs, after approval
- The server is reachable from a public network: the chat gives access to the agent terminal and the port must stay private
- You need an MCP client: the project deliberately works without MCP
Example request
Install ANA, start the dashboard on port 8809 and attach the chat to my order service through the `ana` skillLimitations
Node.js 24 or newer, tmux and a coding agent CLI are required. On Windows tmux runs only inside WSL, and the `install` skill can set it up. The server pastes text into a terminal, so the port stays private: in Codespaces the README requires Private mode. The Claude sign-in is done once by hand through `tmux attach`. The license is AGPL-3.0, and the knowledge graph, roles and offline edition belong to the paid Pro edition. Codespaces usage is billed separately from Claude.
How to disable. Stop the server and sessions with `bash skills/install/scripts/run.sh stop`. Remove the plugin through the `/plugin` menu. Working state lives in the project's `.ana/` folder and is deleted with it.
FAQ
How do I install ANA in Claude Code?
Run `claude plugin marketplace add tykimos/agent-native-agent`, then `claude plugin install ana@agent-native-agent`. After that ask the agent to "install ANA": the `install` skill checks the environment and starts the server.
What do I need to run it by hand?
Clone the repository, open a tmux session with the agent, for example `tmux new -s base-ana-claude` and the `claude` command, and in another terminal run `node server.js`. The dashboard opens at `http://localhost:8809`.
Does ANA use the MCP protocol?
No, the README states there is no bridge and no MCP. Messages go through the tmux paste buffer and replies are read from the Claude Code or Codex agent log.
Can I run ANA without installing on my computer?
Yes, the repository opens in GitHub Codespaces: you need a GitHub account and Claude Code access, and the 8809 port stays in Private mode.
What does the commercial Pro edition add?
A knowledge layer with analysis, a graph and an ontology with rules, the Graph view, admin and member roles, Roadmap and Health, several workspaces, a separate Claude account per session and an offline edition.
Discussion
No questions or reviews yet.
Related
PluginsA Claude Code plugin that draws a 3D office where your session and subagents work at desks from real transcripts, zero config.
AI Builder Club Skills
AI Builder Club — Skills
A Claude Code plugin marketplace to make a repo agent-ready and run compounding agent loops
An open coding agent for the terminal, browser and desktop that works with models from OpenAI and Claude to Ollama
A plugin for Claude Code and Codex: a shared task wall, project memory, reports and a dashboard that shows agents' work across sessions
Local meeting rooms for Codex and Claude Code agents to talk to each other while a person reads and posts from a browser.
A local bridge linking Claude Code and Codex in one session so the agents message each other and review each other's work
README in short
The README explains three principles: watch and talk in one window, the agent as the runtime, and your own storage and server. It goes on with a comparison against SaaS and coding agents, the tmux-based workflow diagram, Codespaces launch, quick start, a description of tabs, chat and skills, and the differences between the free edition and Pro.
README badge
Original SKILL.md
---
name: ana
description: Attach ANA (Agent-Native Agent) to an existing web app or service so the user can operate it by watching a dashboard and chatting with a coding agent that runs inside tmux — chat is injected via tmux paste-buffer and the session is mirrored via capture-pane, with zero dependencies (no MCP, no bridge, no hooks, no plugin runtime). Use this whenever the user wants to "add ANA / a chat+watch dashboard to my app", "attach a coding-agent chat to an existing service", "make my dashboard talk to a tmux agent", "화면 보면서 대화로 조작", "기존 서비스에 ANA 붙이기", or to scaffold the standalone ANA base app. The single file `channel-core.js` is the whole runtime — drop it in and mount it.
---
# Attach ANA to your service
ANA turns any web app into one you **operate by watching + talking**: a coding agent runs inside a tmux pane; the browser sends chat that ANA injects into that pane, and mirrors the session (agent replies, tool activity, busy state) back to the page — no MCP, no bridge, no hooks. **The entire runtime is one dependency-free file: `channel-core.js`.**
## The whole idea (2 pieces)
```
[your web page] ──POST /api/chat──► server ──paste-buffer + Enter──► [tmux pane: claude / any agent]
▲ │ │
└── SSE /api/stream ◄───────────┘ 300ms capture-pane → parse → ledger (auto-mirror)
```
1. **A server** that mounts `channel-core.js` and serves your HTML.
2. **A tmux session** running a coding-agent CLI (`claude`, or any).
## Attach in 3 steps (very simple)
**1. Copy `channel-core.js`** into your project (it is dependency-free, Node ≥ 20 + tmux).
**2. Mount it** — add ~12 lines to (or beside) your server:
```js
const path = require('node:path');
const core = require('./channel-core.js');
const app = core.createChannelServer({
PORT: 8809, BIND: '127.0.0.1',
SESSION: core.defaultSession(__dirname, process.env), // TMUX_SESSION || <ANA name>-claude
SOCKET: process.env.TMUX_SOCKET || '', // default tmux socket
TARGET: core.resolveTarget(__dirname, process.env),
FEED_FILE: path.join(__dirname, '.ana', 'transcript.jsonl'),
SERVABLE: new Set(['index.html']), // your dashboard file(s)
defaultDoc: 'index.html',
autoConfigPane: true, // sets alternate-screen off on connect
});
app.listen(() => console.log('ANA → http://localhost:8809'));