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.3

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.3
File Size Uploaded
ness_agent-0.2.3.tar.gz 721.0 kB Details

Built distribution (wheel)

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

Total release size: 1.1 MB

Release files / ness_agent-0.2.3.tar.gz

Download URL ness_agent-0.2.3.tar.gz
Size 721.0 kB
Tags Source
SHA-256 checksum
How to use checksums
98d7856c6338bb528dd92f92927b922389a211520a1b1bdc88c8d7d47d614a2c
BLAKE2b-256 checksum
How to use checksums
eee6a3b39c445317696400b63af4f19d6f2078377883dfd27e0a6876f141f9c6
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 Aug 23, 2026.

Transparency log

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

Download URL ness_agent-0.2.3-py3-none-any.whl
Size 363.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
2c04799c0f940a15af77011fb8dc93db0940249ce6b91f09a5dc636a1b59450d
BLAKE2b-256 checksum
How to use checksums
ce6599806a50c6f1e7013cc4e000fc44dc5b1bd564ec28b6f175eb1283bbf4fa
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 Aug 23, 2026.

Transparency log

Release history Release notifications | RSS feed

0.2.4

2 release files

This release

0.2.3 This release

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