* feat: adding honcho-cli package * feat: adding more support for command-level flags, also including workarounds for getting raw SDK info * feat: adding peer config * feat: adding setup commands * chore: setting up package dependencies for cli * feat: promote init/doctor to top-level + polish wizard * feat: make init --yes fall back to existing config * chore: updating documentation * chore: updating tagline * feat: structurally updating recomended settings for CLI * fix: style * fix: removing redundant describe method * fix: delete key generation commands and fixing session ID * fix: removing defaults and changing config write path. * chore: pagnating conclusions * chore: require workspace * fix: polish command surfaces — scoping, validation, perf, consistency * chore: removing session message * fix: CLI output shape, destructive-confirm previews, skip needless round-trips * chore: CLI polish — peer inspect config, drop dead helper, doc/help consistency * chore: update readme * chore: updating tests * chore: doc updates * fix: config command * chore: unused code * fix: doctor command * fix: removing quiet tag and fixing session key ordering * fix: config commands and session id command * fix: removing message_count * fix: branding circular dependency * fix: refactor lazy imports to use common.py correctly. * fix: removing all lazy imports * chore: cr fixes * fix: config, env, flag setup * chore: updating skill * feat: adding workspace, session, and message create * fix: init now supports local honcho * chore: cr * feat(cli): CLI surface polish — reasoning flag, peer-scoped messages, help sync Add --reasoning/-r to peer chat (minimal..max), -p peer filter to message list with newest-first ordering, and a curated welcome panel with getting-started/memory/commands sections. Sync the welcome panel and group help strings with the actual registered commands — drop phantom 'session clone', add the 4 missing peer commands and 7 missing session commands, fix conclusion/message/ workspace group docstrings that claimed commands that don't exist. * feat(cli): themed, unified help system with pattern/example Replace the hand-rolled welcome with a layered system: - Theme typer.rich_utils (dim borders, brand color) so every --help inherits the voice. - HonchoTyperGroup subclass renders a curated 3-panel welcome (getting started / memory / commands) with recipes Typer can't auto-generate. - Unify the front door: bare 'honcho', 'honcho --help', and 'honcho help' all render the same welcome via one code path; sub-groups and leaf commands still get Typer's themed renderer. - Replace Click's 'Usage: …' line with pattern/example rows at every sub-group and leaf command, so the help voice stays consistent from top to leaves. * refactor(cli): address review — typed exceptions, chmod 600, tighter redaction, class-based help, tests - Replace module-level monkey-patch of TyperGroup/TyperCommand.get_usage with HonchoTyperGroup applied via cls= on every sub-Typer. Lives in a new _help.py module to avoid circular imports. No longer leaks behavior changes into other Typer users in the same process. - _test_connection dispatches on the SDK's typed exceptions (AuthenticationError, ConnectionError, TimeoutError, APIError) instead of substring-matching error messages. - Config.save() now chmods ~/.honcho/config.json to 0o600 after write so the plaintext API key isn't world-readable on multi-user hosts. - Tighten api_key redaction to '***<last4>' (was 'header...last4'), matching setup._redact for consistency. Short keys fully masked. - Add test_validation.py covering safe IDs, unsafe chars, path traversal, and empty input. Update test_config.py redaction cases and add 0o600 permission assertion. Fix stale patch paths in test_commands.py that pointed at honcho_cli.main instead of the command modules where get_client is actually imported. * feat(cli): add options panel to welcome menu Append a fourth panel listing the global flags (-w/-p/-s, --json, --version, --help) with their env-var counterparts. Discoverable from bare 'honcho' without needing to hunt for --help. * chore(cli): drop --version from welcome options panel * feat(cli): add pixel-honcho icon to banner Prepend a 13-char ASCII rendering of honcho-pixel.svg to the HONCHO wordmark. Uses Unicode half-blocks to pack 12 pixel rows into 6 text rows, faithfully preserving the SVG outline (two eye dots, mouth slit, tapering foot). Appears in bare 'honcho', 'honcho --help', 'honcho --version', and 'honcho init'. * fix: polish Honcho CLI wolcome panel and error messages * fix: honcho workspace inspect speed * chore: minor fix to session pagination * fix: removing NDJSON output * chore: consolidating honcho CLI's dula argv grammar onto Pattern A (command-first) * chore: clean up imports * fix: four `-s` consistency fixes applied * chore: minor changes to memory rows * fix: changing package name to honcho-cli * fix: removing pixel face --------- Co-authored-by: Erosika <eri@plasticlabs.ai> |
||
|---|---|---|
| .. | ||
| examples | ||
| src/honcho | ||
| .gitignore | ||
| CHANGELOG.md | ||
| README.md | ||
| pyproject.toml | ||
README.md
Honcho Python SDK
The official Python library for the Honcho conversational memory platform. Honcho provides tools for managing peers, sessions, and conversation context across multi-party interactions, enabling advanced conversational AI applications with persistent memory and theory-of-mind capabilities.
Installation
pip install honcho-ai
Quick Start
from honcho import Honcho
# Initialize client
client = Honcho(api_key="your-api-key")
# Create peers (participants in conversations)
alice = client.peer("alice")
bob = client.peer("bob")
# Create a session for group conversations
session = client.session("conversation-1")
# Add messages to the session
session.add_messages([
alice.message("Hello, Bob!"),
bob.message("Hi Alice, how are you?")
])
# Query conversation context
response = alice.chat("What did Bob say to the user?")
print(response)
Core Concepts
Peers
Peers represent participants in conversations.
# Create peers
assistant = client.peer("assistant")
user = client.peer("user-123")
# Chat with global context
response = user.chat("What did I talk about yesterday?")
# Chat with perspective of another peer
response = user.chat("Does the assistant know my preferences?", target=assistant)
Sessions
Sessions group related conversations and messages:
# Create a session
session = client.session("project-discussion")
# Add peers to session
session.add_peers([alice, bob])
# Add messages
session.add_messages([
alice.message("Let's discuss the project timeline"),
bob.message("I think we need two more weeks")
])
# Get conversation context
context = session.context()
Messages and Context
Retrieve and use conversation history:
# Get messages from a session
messages = session.messages()
# Convert to OpenAI format for further prompting
openai_messages = context.to_openai(assistant="assistant")
# Convert to Anthropic format for further prompting
anthropic_messages = context.to_anthropic(assistant="assistant")
Async Support
The SDK provides async access via the .aio accessor on any instance:
from honcho import Honcho
async def main():
client = Honcho(api_key="your-api-key")
# Async peer and session creation
peer = await client.aio.peer("user-123")
session = await client.aio.session("conversation-1")
# Async chat
response = await peer.aio.chat("What does this user prefer?")
# Async iteration
async for p in client.aio.peers():
print(p.id)
Metadata Management
# Set peer metadata
user.set_metadata({"location": "San Francisco", "preferences": {"theme": "dark"}})
# Session metadata
session.set_metadata({"topic": "project-planning", "priority": "high"})
Multi-Perspective Queries
# Alice's view of what Bob knows
response = alice.chat("Does Bob remember our discussion about the budget?", target=bob)
# Session-specific perspective
response = alice.chat("What does Bob think about this project?",
target=bob,
session=session)
Configuration
Environment Variables
export HONCHO_API_KEY="your-api-key"
export HONCHO_BASE_URL="https://api.honcho.dev" # Optional
export HONCHO_WORKSPACE_ID="your-workspace" # Optional
Client Options
client = Honcho(
api_key="your-api-key",
environment="production", # or "local"
workspace_id="custom-workspace",
base_url="https://api.honcho.dev"
)
License
Apache 2.0 - see LICENSE for details.