Repository: autohandai/code-agent-sdk-cpp. This SDK is in beta while the Agent SDK APIs stabilize. Pin commits or package versions in production.

Requirements

  • C++20 compiler.
  • CMake 3.22 or newer.
  • Autohand CLI installed, authenticated, and configured.
  • POSIX runtime for the initial transport implementation.

Install

CMake

include(FetchContent)

FetchContent_Declare(
  autohand_sdk
  GIT_REPOSITORY https://github.com/autohandai/code-agent-sdk-cpp.git
  GIT_TAG main
)

FetchContent_MakeAvailable(autohand_sdk)
target_link_libraries(my_app PRIVATE autohand::sdk)

Run your first agent

Start with the high-level agent API when you want the SDK to own the run lifecycle and final result collection.

main.cpp

#include <autohand/sdk.hpp>
#include <iostream>

int main() {
  autohand::Agent agent(
      autohand::Config::from_environment()
          .with_cwd(".")
          .with_instructions("Review code with senior C++ judgement."));

  auto run = agent.send("List the main source files and tell me what looks risky.");

  run.stream([](const autohand::SdkEvent& event) {
    if (event.type == "message_update") {
      std::cout << event.text_delta();
    }
  });

  auto result = run.wait();
  std::cout << result.text << "\n";
  agent.close();
}

API shape

  • CMake target: `autohand::sdk`.
  • Value-oriented `autohand::Config` setup.
  • High-level `autohand::Agent` and `autohand::Run` workflow.
  • Low-level `autohand::AutohandSdk` methods for direct runtime control.

Low-level control

Use `AutohandSdk` when your native host needs to toggle plan mode, stream events directly, or own JSON-RPC request timing.

C++

#include <autohand/sdk.hpp>
#include <iostream>

int main() {
  autohand::AutohandSdk sdk(autohand::Config::from_environment().with_cwd("."));
  sdk.start();
  sdk.set_plan_mode(true);

  sdk.stream_prompt("Create a discovery plan for this SDK change.", [](const autohand::SdkEvent& event) {
    std::cout << event.type << "\n";
  });

  sdk.stop();
}

Next steps