Skip to main content

Ness Agent — hackable coding-agent harness

Ness Agent

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

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, and filesystem-driven extension points under .ness/.

Installation

Requires Python 3.12+.

pip install ness-agent

Optional tracing support:

pip install ness-agent[tracing]

From source:

Contributors (run tests, use project venv):

git clone https://github.com/Sagnnik/ness-agent.git
cd ness-agent
uv sync
uv run ness

Install ness on your PATH from a local clone (editable):

git clone https://github.com/Sagnnik/ness-agent.git
cd ness-agent
uv tool install -e .
ness

Or with pip: pip install -e . (then run ness from that environment).

Quick start — CLI (Ness)

export OPENAI_API_KEY=...   # or set via /config on first launch
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.text)

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/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.1.0.tar.gz (440.1 kB 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.1.0-py3-none-any.whl (281.2 kB view details)

Uploaded Python 3

File details

Details for the file ness_agent-0.1.0.tar.gz.

File metadata

  • Download URL: ness_agent-0.1.0.tar.gz
  • Upload date:
  • Size: 440.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for ness_agent-0.1.0.tar.gz
Algorithm Hash digest
SHA256 3e0f08b2f4d42dbe5b30e4d261de995148380dfd86e30d1e78348564ba27a810
MD5 d8b8ee6ef2285a64e528fad0c10ce892
BLAKE2b-256 7ae757f5151ea24701cc41affef0c73a1ebb478da852a7086d05c24327bf747e

See more details on using hashes here.

Provenance

The following attestation bundles were made for ness_agent-0.1.0.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.1.0-py3-none-any.whl.

File metadata

  • Download URL: ness_agent-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 281.2 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.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f631d644414b9deb75a563cbbed37c4e407972aec51e42f417a8c85df6b50863
MD5 392215056b6903d70842c1b94c4ef0ba
BLAKE2b-256 16134e81e8b99a3be32790c33d63d6b512aa66ffc3916494ec2a020a7e45ed10

See more details on using hashes here.

Provenance

The following attestation bundles were made for ness_agent-0.1.0-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