[READ-ONLY] Mirror of https://github.com/ewanc26/wolfram. Primarily C AT Protocol SDK: client-side, wire-level implementation (XRPC, OAuth/DPoP, identity, repos/MST/CAR, firehose/Jetstream, moderation, CLI, generated clients). Not a port of the PDS/AppView/Ozone backends.
ansi-c api-client at-protocol atproto bluesky c c-sdk decentralized decentralized-social embedded lexicon libwolfram memory-management oauth2 posix sdk shared-library static-library systems-programming xrpc
wolfram docs
1 folder · 20 files

README.md

wolfram documentation #

Usage documentation for the wolfram C23 SDK for the AT Protocol.

This directory contains per-module guides with runnable C snippets. Each snippet is accurate to the public function signatures in include/wolfram/ and follows the project conventions: the wf_ prefix, wf_status return codes, and explicit ownership (every heap-allocated output has a matching _free that you must call).

Guide Module What it covers
getting-started.md build Prerequisites, building, optional modules, Lexicon generation, examples.
agent.md agent.h High-level wf_agent_* API: login, posts/replies, feeds, profile, social graph, notifications, blobs, preferences, push, pagination.
agent_usage.md agent.h Deeper agent internals and end-to-end usage patterns.
typed_api.md *_typed.h Owning typed parsers/builders for feed, thread, graph, list, embed, notification, and more.
identity.md identity.h, plc.h DID/handle resolution, com.atproto.identity ops, and PLC operations.
sync.md sync.h, sync_subscribe.h, sync_verify.h Repo CAR download (wf_sync_get_repo), CAR verify/import, firehose subscribeRepos, commit verification, blob/blocks endpoints.
moderation.md moderation.h wf_mod_* decision engine (blur/alert/inform/filter).
video.md video_typed.h Video blob upload, job-status polling, and post embedding.
validate.md validate.h Runtime validation with wf_validate_value / wf_validate_record against a lexicon registry.
oauth.md oauth.h + oauth/ Protected-resource / authorization-server metadata discovery, PKCE S256, ES256 DPoP, PAR begin, callback completion, and the wf_auth_client.
notification.md notification.h Notification listing and preferences.
unspecced.md unspecced_typed.h app.bsky.unspecced typed parsers (trends, suggested users, thread v2, etc.).
cli.md cli The wolfram command-line client reference.
bindings-cpp-csharp.md cpp/, dotnet/ C++ RAII (wolfram-cpp) and C# (Wolfram.Interop) binding guidance.
modules.md all Full module/status table.
design.md — Design, rationale, and the name.
roadmap.md — What's built and what's next.

Getting started #

Build with CMake (requires CMake ≥ 3.20, libcurl, and OpenSSL; libsecp256k1, c-ares, and zstd are optional and degrade gracefully):

cmake -S . -B build
cmake --build build
ctest --test-dir build

On macOS, install dependencies with Homebrew first:

brew install cmake curl openssl secp256k1 c-ares zstd

If CMake cannot find Homebrew's libcurl, point it at the prefix:

cmake -S . -B build -DCMAKE_PREFIX_PATH="$(brew --prefix curl)"

Include the single umbrella header in your program:

#include "wolfram/wolfram.h"   /* pulls in every module */

Link the wolfram target. The core SDK is pure C23; the optional tools/wf_lexgen.cpp code generator is a C++ development-time tool and is never a runtime dependency. See the top-level README.md for the full module status table and prerequisites.