Skip to main content

Ness Agent — hackable coding-agent harness

Ness Agent

CI PyPI Python License

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 terminal UI showing project context, tool execution, and Act mode

Open the demo video

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

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 sign in to Codex with ChatGPT or configure an OpenRouter API key. Codex authentication uses the installed codex CLI app-server's managed browser/device flow and stores credentials in Ness's isolated global config directory; it never reads or changes ~/.codex.

[!NOTE] Ness's Codex model transport is experimental. Authentication and credential management are handled by Codex app-server, while Ness sends inference requests directly to the ChatGPT Codex Responses endpoint used by Codex CLI.

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.

Metadata

Release files for ness-agent 0.2.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ness-agent 0.2.4
File Size Uploaded
ness_agent-0.2.4.tar.gz 1.3 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for ness-agent 0.2.4
File Interpreter ABI Platform
ness_agent-0.2.4-py3-none-any.whl Python 3 none any Details

Total release size: 1.7 MB

Release files / ness_agent-0.2.4.tar.gz

Download URL ness_agent-0.2.4.tar.gz
Size 1.3 MB
Tags Source
SHA-256 checksum
How to use checksums
d38881cdc13b7593569f7381caf7023e985a094d186a9b39fb1df92a7f9ce8cd
BLAKE2b-256 checksum
How to use checksums
4efec160c99d7f55df9dfba75ad23b572d44af9f185d3bab3ddcd6d3a109b0ed
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 8, 2026.

Transparency log

Release files / ness_agent-0.2.4-py3-none-any.whl

Download URL ness_agent-0.2.4-py3-none-any.whl
Size 368.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
feb1fe05cdcd765f040cfd5ee5d4f358597d93ef8d4af8e0c7546e6d6196c121
BLAKE2b-256 checksum
How to use checksums
9b943b67bbb0da4214ec3a71bb59a945a1c36e4acc4737009dee11ba600677b9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 8, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.2.4 This release

2 release files

0.2.3

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page