Ness Agent
Ness Agent is an experimental, hackable coding-agent harness for engineers who want to own the loop. It ships as a Python SDK you can embed in your own tools and Ness, an interactive CLI for day-to-day coding sessions.
NessAgent TUI in Act mode.
0.x experimental — APIs may change until 1.0. See CHANGELOG.
Table of contents
Overview
| Component | What it is |
|---|---|
| Ness Agent SDK | LangGraph agent loop, built-in tools, permissions, memory, skills, hooks, MCP, compaction, reflection, tracing |
| Ness CLI | Terminal UI (ness), plan/act modes, git worktrees, global config, .ness/ project layout |
Both are included in the ness-agent PyPI package. OpenRouter-compatible chat models, native tool-calling, cache-safe summary compaction, and filesystem-driven extension points under .ness/.
Installation
Requires Python 3.12+.
CLI — global install (recommended)
On Linux/Mac Os:
curl -fsSL https://nessagent.dev/install.sh | sh
On Windows:
powershell -ExecutionPolicy ByPass -c "irm https://nessagent.dev/install.ps1 | iex"
Or install it directly with uv or pipx:
uv tool install --upgrade ness-agent
# or: pipx install ness-agent
Launch ness and run /login to use either a Codex subscription or an
OpenRouter API key. Codex sign-in uses the installed codex CLI's managed
browser/device flow and stores credentials in Ness's isolated global config
directory; it never reads or changes ~/.codex.
For environment-based OpenRouter setup:
export OPENAI_API_KEY=your-openrouter-api-key
export OPENAI_BASE_URL=https://openrouter.ai/api/v1
Add those lines to ~/.bashrc or ~/.zshrc to persist across sessions. Alternatively, /login accepts and masks the key (stored in global secrets.json).
Ness does not automatically read or migrate a project .env file. You may
still keep local values in .env, but load them into the process explicitly
(for example, uv run --env-file .env ness) or use /config.
Optional tracing support:
uv tool install 'ness-agent[tracing]'
Ensure ~/.local/bin (uv) or pipx's bin directory is on your PATH.
SDK — library install
For embedding the agent harness in your own Python project (use a venv):
pip install ness-agent
pip install 'ness-agent[tracing]' # optional
# In a uv-managed project (adds to pyproject.toml):
uv add ness-agent
uv add ness-agent --extra tracing # optional
From source (contributors):
git clone https://github.com/Sagnnik/ness-agent.git
cd ness-agent
uv sync
uv run ness
Editable global install from a clone:
git clone https://github.com/Sagnnik/ness-agent.git
cd ness-agent
uv tool install -e .
ness
Quick start — CLI (Ness)
ness
/init # create .ness/ and global config
Headless one-shot:
ness -p "what does the auth module do?"
Parallel isolated session:
ness --worktree feature-x
Full CLI reference: docs/cli.md · Configuration: docs/configuration.md
Quick start — SDK
import asyncio
from langchain_core.tools import tool
from ness_agent import NessAgent, PromptLayers, PromptLayersConfig
@tool
def ping() -> str:
"""Return pong."""
return "pong"
async def main() -> None:
agent = NessAgent(
model=your_chat_model,
tools=[ping],
prompt=PromptLayers(PromptLayersConfig(l0="You are a helpful agent.", persona="Be concise.")),
)
session = agent.session(thread_id="demo-1")
result = await session.run("say hello")
print(result.assistant_message)
asyncio.run(main())
Full SDK guide: docs/sdk.md · Architecture: docs/architecture.md
Documentation
| Guide | Description |
|---|---|
| docs/README.md | Documentation index |
| docs/sdk.md | SDK usage, public API, tracing |
| docs/sdk-api.md | SDK API reference — signatures and contracts |
| docs/cli.md | Ness TUI, slash commands, MCP, permissions |
| docs/configuration.md | Global config, .ness/ layout, env vars |
| docs/architecture.md | Prompt layers, modes, memory, compaction |
Contributing
Contributions welcome. See CONTRIBUTING.md for dev setup and PR guidelines.
License
Licensed under the Apache License 2.0. See LICENSE.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ness_agent-0.2.2.tar.gz.
File metadata
- Download URL: ness_agent-0.2.2.tar.gz
- Upload date:
- Size: 1.4 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
df0307a125f7f1dba4fc0e13894ee9c0a388414061ff689f53132f5190b74254
|
|
| MD5 |
7b3caea4199adec9d45f522a495976d7
|
|
| BLAKE2b-256 |
d15928b54f9b254ee91ae788aef71df72c93eb6a935ef45e87f521fdfa9c3442
|
Provenance
The following attestation bundles were made for ness_agent-0.2.2.tar.gz:
Publisher:
publish.yml on Sagnnik/ness-agent
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
ness_agent-0.2.2.tar.gz -
Subject digest:
df0307a125f7f1dba4fc0e13894ee9c0a388414061ff689f53132f5190b74254 - Sigstore transparency entry: 2478728812
- Sigstore integration time:
-
Permalink:
Sagnnik/ness-agent@75bbb65b5402b84f09656b0dcde169617a6ff606 -
Branch / Tag:
refs/tags/v0.2.2 - Owner: https://github.com/Sagnnik
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@75bbb65b5402b84f09656b0dcde169617a6ff606 -
Trigger Event:
push
-
Statement type:
File details
Details for the file ness_agent-0.2.2-py3-none-any.whl.
File metadata
- Download URL: ness_agent-0.2.2-py3-none-any.whl
- Upload date:
- Size: 354.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1063c0629822ef267734bc9a4a4d6f32d63f86e6cda4e7abe285f1b05090a97f
|
|
| MD5 |
525840755b1b228b1aaeb7286e6714a2
|
|
| BLAKE2b-256 |
441a327ba715603b9bbd0c764c4350496d8529cb2774a62e3366fb1928c9240a
|
Provenance
The following attestation bundles were made for ness_agent-0.2.2-py3-none-any.whl:
Publisher:
publish.yml on Sagnnik/ness-agent
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
ness_agent-0.2.2-py3-none-any.whl -
Subject digest:
1063c0629822ef267734bc9a4a4d6f32d63f86e6cda4e7abe285f1b05090a97f - Sigstore transparency entry: 2478728980
- Sigstore integration time:
-
Permalink:
Sagnnik/ness-agent@75bbb65b5402b84f09656b0dcde169617a6ff606 -
Branch / Tag:
refs/tags/v0.2.2 - Owner: https://github.com/Sagnnik
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@75bbb65b5402b84f09656b0dcde169617a6ff606 -
Trigger Event:
push
-
Statement type: