Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

147 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

 ██████╗ ██╗  ██╗ ██████╗ ███████╗████████╗ █████╗ ██╗
██╔════╝ ██║  ██║██╔═══██╗██╔════╝╚══██╔══╝██╔══██╗██║
██║  ███╗███████║██║   ██║███████╗   ██║   ███████║██║
██║   ██║██╔══██║██║   ██║╚════██║   ██║   ██╔══██║██║
╚██████╔╝██║  ██║╚██████╔╝███████║   ██║   ██║  ██║██║
 ╚═════╝ ╚═╝  ╚═╝ ╚═════╝ ╚══════╝   ╚═╝   ╚═╝  ╚═╝╚═╝

GhostAI

No telemetry. No callbacks. No witnesses.

An agent with a real shell and real file tools, running local models on your own hardware — Ollama, LM Studio, llama.cpp, vLLM.
Cloud providers are opt-in, not assumed.

licence node build telemetry runs npm

npm install -g @ghostwire/ghostai && ghostai serve

Prints a URL and a one-time code. Open it, pick a model — done.
Needs Node ≥ 22.13. Nothing else.

Want a team rather than one agent? ghostai preset install picks from a catalogue — a researcher, a coder, an analyst, a coordinator — and builds only the containers the ones you pick need.

Get started · Docs · Security

A terminal recording: ghostai chat is launched, asked what is in the workspace, calls the list_dir tool, and streams back an answer with a code block — finishing in 2 steps.
GhostAI's chat view: a streaming answer with a highlighted code block, the session sidebar, and the context budget under the composer.

What it does

Acts Reads files, edits them, runs commands, browses the web from a sandbox.
Four ways in Browser, terminal, REST API, Telegram. Same conversations, same database.
Remembers Plain markdown in your project, which you read, edit and commit.

Built for long, tool-heavy work on infrastructure you control — recon and pen-test runs, codebase surgery, research sweeps, scheduled chores.

Why GhostAI

  • You hold every key. Permission is per tool, per agent — allow | ask | deny — and a tool absent from the map is not refused at call time, it is never offered to the model at all. Nothing is granted implicitly, ever.
  • A small prompt is a fast prompt. On a local model the prompt is not a bill, it is wall-clock: whatever changed since the last step gets re-processed before the first token comes back, and one tool-using turn is five or ten requests over the same history. So the volatile half of the prompt is kept tiny, tool definitions are rebuilt once per turn rather than once per step, and a toolbox advertises a whole container of programs in ~40 tokens where the equivalent tool schemas cost 60–80 each, per request.
  • Nothing leaves the box. A repo-wide grep for telemetry|analytics|posthog|sentry|mixpanel returns exactly one hit — the test that forbids them. Binds 127.0.0.1; a public bind with auth off refuses to start.
  • No hidden preamble. All eight prompt templates are yours to edit, and systemPrompt replaces the built-in text rather than being bolted underneath something you cannot see.
  • Security you can audit in an afternoon. Every guard lives in one package behind a 95% coverage gate, each explaining the attack it closes and why the obvious approach fails.

The competition

  • More private than ChatGPT — nothing leaves the box. Zero telemetry, and fully offline against Ollama.
  • More contained than Claude Codeexec runs in a digest-pinned container, caps dropped, network capped by the manifest.
  • Leaner on tokens than OpenClaw — a whole toolbox advertises in ~40 tokens, where tool schemas cost 60–80 each, per request.

See it

A tool call, expanded

A list_dir tool card, expanded to show the files it returned.

An approval, before anything runs

An approval prompt for exec, showing the argv it would run, with Once, This session, Always and Deny.

Where the context window went

The context inspector, breaking a session's token usage into system prompt, tool definitions, session and live state.

The workspace, browsable and editable

The file browser, listing the workspace tree.

More in Web UI. Generated from the real app, not staged.

Loadout

Skills A folder in the workspace. The agent opens the sheet when it applies; ~20 tokens to index.
Memory One markdown file per fact, committed beside the project.
Toolboxes Bound the blast radius: exec in a digest-pinned container — caps dropped, root read-only, network capped by the manifest, and no field an agent could widen.
Agent presets ghostai preset install picks agents from a catalogue and builds only the containers those agents named. Nothing runs until you approve the container.
MCP servers stdio, Streamable HTTP or SSE, with OAuth. Each agent picks which of their tools it may call.
Extensions Tools, channels, providers, prompt sections, commands. Approval is a digest over every byte.
Subagents One agent hands work to another as an ask_<id> tool.
Telegram The same sessions from a phone. Answers only the ids you list.
Scheduled jobs Cron and one-shot. A heartbeat is a job, not a second system.
REST + WebSocket One port, with an OpenAPI 3.1 doc generated from the schemas the server validates against.

Security

Assume the model is compromised.

It reads web pages, command output and files an attacker may have written. Everything it asks for is an untrusted request.

Guard What it stops
Workspace jail Path traversal. /etc/passwd addresses <workspace>/etc/passwd; paths are rebuilt, then realpath'd.
Argv-only exec Command injection. execFile with shell: false — no shell, so no string to interpret.
Toolboxes Blast radius. A digest-pinned container plus its whole policy, authorised by manifest hash.
Per-tool permission An agent doing what you did not enable. Absent means not enabled; ask shows you the arguments first.
guardedFetch SSRF and DNS rebinding. Resolved addresses are pinned into the dispatcher — no second lookup to differ.
Nonce fencing Prompt injection. Every tool result is fenced with a fresh per-turn nonce, and the model is told it is data.
Credential vault Key theft at rest. AES-256-GCM, 0600, key in the OS keychain. Nothing reads a credential back out over HTTP.
Auth Guessing. argon2id, and two asymmetric throttle scopes so a botnet cannot spread its attempts out.

Security states each guard's limits — including the one that matters: a workspace is an organisational boundary, not a security boundary, wherever host exec is enabled. That is what toolboxes are for. SECURITY.md is how to report a vulnerability.

What is not built yet

The schemas and seams ship; the implementations do not, and nothing in the UI advertises them — a settings screen naming a feature you cannot open is one an operator checks twice.

Feature Ships today Missing
Heartbeat delivery The decide/run/evaluate triad, as a scheduled job's payload targets reaching a channel
Session search Keyset pagination and filters Text search over message content

Two smaller ones, so nothing here reads as more finished than it is: only the openai-chat wire adapter ships, so the one registry entry naming another wire — anthropic — is refused at construction rather than falling back, and reaching it today means an endpoint that speaks openai-chat or an extension that contributes the wire; and the translation layer is complete while English is the only shipped locale — adding one is a folder plus a line.


Docs

Getting started · CLI · Configuration · Prompts · Providers · Tools & permissions · Skills · Memory · Toolboxes · Extensions · Web UI · API · Architecture · Security · Development

Contributing

pnpm check is not the CI gate. CONTRIBUTING.md has the real one, Development the reasoning behind it.

Running from source
git clone https://github.com/therezor/GhostAI.git
cd GhostAI
pnpm install
pnpm build                                  # → packages/cli/dist/index.js
pnpm --filter @ghostwire/ghostai link --global    # gives you `ghostai`

Needs pnpm 11 (corepack enable). pnpm build is not optional — without it ghostai serve says UI not built and runs the API alone.

License

MIT

About

Self-hosted autonomous AI agent framework designed for local LLMs, extensible workflows, and minimal token usage.

Resources

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages