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

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

ness_agent-0.2.2.tar.gz (1.4 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ness_agent-0.2.2-py3-none-any.whl (354.4 kB view details)

Uploaded Python 3

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

Hashes for ness_agent-0.2.2.tar.gz
Algorithm Hash digest
SHA256 df0307a125f7f1dba4fc0e13894ee9c0a388414061ff689f53132f5190b74254
MD5 7b3caea4199adec9d45f522a495976d7
BLAKE2b-256 d15928b54f9b254ee91ae788aef71df72c93eb6a935ef45e87f521fdfa9c3442

See more details on using hashes here.

Provenance

The following attestation bundles were made for ness_agent-0.2.2.tar.gz:

Publisher: publish.yml on Sagnnik/ness-agent

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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

Hashes for ness_agent-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 1063c0629822ef267734bc9a4a4d6f32d63f86e6cda4e7abe285f1b05090a97f
MD5 525840755b1b228b1aaeb7286e6714a2
BLAKE2b-256 441a327ba715603b9bbd0c764c4350496d8529cb2774a62e3366fb1928c9240a

See more details on using hashes here.

Provenance

The following attestation bundles were made for ness_agent-0.2.2-py3-none-any.whl:

Publisher: publish.yml on Sagnnik/ness-agent

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page