LibPolyCall v1.0.0 configuration uses Polycallfile for writable project
topology, Polycallrc for global read-only runtime defaults, and
Polycallrc.<language> for language overrides. See
docs/CONFIGURATION_STANDARD.md for load
order, validation, migration, and CLI commands.
From the Desk of Nnamdi Michael Okpala, Founder — OBINexusComputing
| Founder | LibPolyCall Version Favicon |
|---|---|
![]() |
For too long, we've accepted the fragmentation of our digital ecosystem. Python talks to Python. Node.js whispers to JavaScript. Java shouts in its own dialect. Meanwhile, developers waste countless hours building bridges between languages, creating duplicate APIs, and maintaining separate implementations for what should be unified solutions.
This ends now.
LibPolyCall represents a fundamental shift from "binding-first" to "program-first" architecture. While others build language-specific solutions, we've created something unprecedented: a single protocol that makes language barriers obsolete.
Think about it: Why should your brilliant algorithm be imprisoned in one language? Why should your API exist in five different implementations? Why should your microservices struggle to communicate because they weren't born speaking the same dialect?
The answer is simple: They shouldn't.
In a world where security breaches make headlines daily, LibPolyCall implements zero-trust architecture at its core. Every component, every connection, every data exchange is validated, encrypted, and monitored. We don't just connect systems—we create secure, intelligent networks that think before they trust.
Our cryptographically-seeded GUID system doesn't just track state; it creates perfect reproducibility. Every bug becomes a learning opportunity. Every interaction becomes intelligence. Every problem becomes solvable.
Traditional systems are blind. They process requests without understanding context, handle errors without learning from them, and scale without intelligence.
LibPolyCall sees everything:
- Silent protocol observation captures every interaction
- Real-time analytics reveal patterns others miss
- State machine mapping creates complete user journey intelligence
- Bug replication makes impossible problems possible to solve
This isn't just monitoring—this is system consciousness.
- GCC 9+ or Clang 11+ (C11 support required)
- GNU Make 4+
- POSIX threads (
-lpthread) - Optional: OpenSSL (
USE_OPENSSL=1)
# Default build (static lib + shared lib + CLI binary)
make
# Debug build (symbols + DEBUG macro)
make debug
# Optimised release build
make release
# Fully static binary (Linux / MinGW only)
make static
# Rebuild from scratch
make rebuildThe CLI binary is emitted under build/bin and object files are emitted under
build/obj.
sudo make install # installs to /usr/local by default
sudo make install PREFIX=/opt/polycall # custom prefix
sudo make uninstallmake clean # remove build artefacts
make distclean # clean + uninstall| Target | Description |
|---|---|
all |
Build everything (default) |
debug |
Build with -g -DDEBUG |
release |
Build with -O2 -DNDEBUG |
static |
Static executable (Linux / MinGW) |
rebuild |
Clean then build all |
install |
Install headers, libs, CLI |
uninstall |
Remove installed files |
distclean |
clean + uninstall |
help |
Print this table |
Options: pass USE_OPENSSL=1 to link libssl/libcrypto.
The polycall binary exposes the following commands.
polycall --help # print usage
polycall --repl # interactive REPL (global scope)
polycall --daemon --config Polycallfile # foreground daemon supervisorThe interactive REPL supports an in-memory PolyCall session, hexadecimal terminal colors, and Tab completion. See docs/POLYCALL_READ_EVAULTE_PRINT_LOOP.md.
Any sub-command also accepts --repl to drop into a scoped REPL after execution:
polycall micro isolate create myapp --replpolycall config load [language] # load & validate hierarchy, show load order
polycall config validate [path] # validate single file or full hierarchy
polycall config show [language] # print merged config to stdout
polycall config rc show <language> # print language override file
polycall config rc validate <language> # validate language override file
polycall config migrate <source> <Polycallrc.lang> # migrate legacy .polycallrcpolycall micro isolate create NAME [--memory SIZE] # create isolation cell
polycall micro isolate list # list active isolation cellsNAME is any identifier; --memory SIZE accepts bytes optionally suffixed with
k, m, or g (e.g. --memory 64m).
polycall edge route nearest TARGET --from SOURCE [--strategy astar]Routes from SOURCE to TARGET using A* on the configured edge graph and
prints the path and total cost.
polycall ffi call TARGET:SYMBOL [--topology local|p2p|network] [--data VALUE]TARGET is the runtime identifier (e.g. pypolycall, node, java).
SYMBOL is the exported function name. Language is inferred from TARGET.
polycall telemetry show # list captured events with sequence numbers
polycall telemetry snapshot [--cuid] # snapshot current event buffer; print CUID if requestedpolycall cuid verify SNAPSHOT_ID # verify a CUID against the in-process snapshotNote: a telemetry snapshot --cuid must have been taken in the same process
(or REPL session) before cuid verify can succeed.
Run the linter against the C sources (requires cpplint):
pip install cpplint
cpplint --filter=-legal/copyright,-build/include_subdir,-build/header_guard \
--extensions=c,h \
src/core/*.c src/cli/*.c src/main.cFor deeper memory and thread safety analysis (requires cppcheck):
cppcheck --enable=all --std=c11 \
-I include -I include/core \
--suppress=missingIncludeSystem \
src/For clang-tidy (requires LLVM):
clang-tidy src/core/*.c src/cli/*.c -- \
-std=c11 -I include -I include/coreThe following issues were identified by static analysis on 2026-06-24 and are tracked for remediation:
| Severity | File | Issue |
|---|---|---|
| Resolved | src/cli/polycall_cli.c |
REPL tokenization uses a local reentrant splitter so Windows and Unix builds do not depend on strtok_r() |
| High | src/core/network.c:50,179 |
socket_fd > 0 incorrectly rejects fd 0 (stdin); use >= 0 |
| High | src/core/polycall_micro.c:104 |
polycall_micro_cleanup iterates 0..count while destroy_service decrements count, causing early loop exit and leaked services |
| High | src/core/polycall_micro.c:343 |
polycall_micro_collect_garbage calls destroy_service during iteration, invalidating the loop invariant |
| Medium | src/core/polycall_protocol.c:13 |
protocol_error_buffer is a static global — not safe under concurrent protocol contexts |
| Medium | src/core/network.c |
errno used (via select error path) but <errno.h> not explicitly included |
| Resolved | src/core/polycall_ffi.c |
Payload size formatting uses a platform-specific macro so Windows builds do not warn on %zu support |
| Medium | src/core/polycall_config.c |
unsigned long used for port values; prefer uint32_t for portability |
| Low | src/core/polycall_adapter.c |
Mixed CRLF/LF line endings; normalise to LF |
| Low | network.c, polycall_parser.c, polycall_state_machine.c, polycall_tokenizer.c |
Missing trailing newline at end of file |
| Low | src/cli/polycall_cli.c:128,459–485 |
unsigned long / unsigned long long casts; prefer fixed-width uint64_t |
LibPolyCall uses a three-layer configuration hierarchy:
| File | Layer | Purpose |
|---|---|---|
Polycallfile |
Project (writable) | Servers, network topology, workspace paths |
Polycallrc |
Runtime (read-only defaults) | Port, log level, timeouts |
Polycallrc.<language> |
Language override | Per-language server type and workspace |
Legacy .polycallrc is detected and warned about; migrate with:
polycall config migrate .polycallrc Polycallrc.<language>- Three-layer config hierarchy (
Polycallfile/Polycallrc/Polycallrc.<language>) - Zero-trust protocol with cryptographically-seeded CUID
- Telemetry engine with snapshot and event replay
- Micro-service isolation with memory and CPU limits
- Edge node registration and connection management
- Cross-language FFI: C, Python, Node.js, Java, Go, Rust, COBOL
- COBOL binding: enterprise mainframe integration via
cbl-polycall - Unified codebase: merged polycall repository into libpolycall
- Expanded documentation: legal framework and DOP architecture docs
Migration notes: original polycall v1 preserved in polycall-v1/; all
bindings now under bindings/. See MIGRATION_REPORT.md for details.
LibPolyCall is the polymorphic binding layer that powers the OBINexus Web IaaS platform. It provides:
- One API definition → multiple language implementations
- Unified debugging → faster problem resolution
- Centralised telemetry → intelligent scaling decisions
- Program-first design → technology-agnostic solutions
"In a world of language silos, be the universal protocol. In an age of security breaches, be the zero-trust solution. In an era of blind systems, be the intelligent observer. The future isn't coming—it's here, and it's written in C."
Repository: obinexus/libpolycall
Nnamdi Michael Okpala — Founder & Chief Architect, OBINexusComputing
