Product
Built, run, and debugged before you see a diff.
ByteAsk uses your compiler, your sanitizers, gdb, and your tests. You review a change that already ran.
Live debugging
It joins the gdb session you already have open.
Linux allows one debugger per process. ByteAsk uses a bridge you start in yours.
$ claude "my gdb is stopped on the deadlock in orderd, take a look"
Your gdb is holding the process.
$ gdb -p <pid> -batch -ex bt
✗warning: process <pid> is already traced by process <your-gdb>
✗ptrace: Operation not permitted.
One tracer per process. The kernel refuses
a second debugger while yours is attached.
$ byteask "my gdb is stopped on the deadlock in orderd, take a look"
Joined through the bridge you started.
(gdb) bt
#3 OrderBook::cancel (...) at order_book.cpp:214
(gdb) p risk_mtx_._M_mutex.__data.__owner
$1 = 71154 (held by the risk thread)
Your breakpoints are still set for the next turn.
+ std::scoped_lock lk(book_mtx_, risk_mtx_);
✓Proposed, waiting for your approval.
Your network
Your machine
byteaskthe CLI
gdbyour open session
Toolsbuild, sanitizers, tests
ByteAsk gatewaycompany keys, allowlists
self-hosted modelsvLLM, Ollama, llama.cpp
The sanitizer names the line.
==2967905==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x60c0000000c8WRITE of size 4 at 0x60c0000000c8 thread T0 #0 0x55d75c82e5a6 in OrderBook::cancel_all() demo/outputs/order_book.cpp:31 #1 0x55d75c82e5a6 in main demo/outputs/order_book.cpp:42 #2 0x7feead645249 in __libc_start_call_main libc_start_call_main.h:580x60c0000000c8 is located 8 bytes to the right of 128-byte regionallocated by thread T0 here: #0 0x7feeadcb94c8 in operator new(unsigned long)SUMMARY: AddressSanitizer: heap-buffer-overflow demo/outputs/order_book.cpp:31
Test project demo/outputs/build1/3 Test #1: book_ops ......................... Passed 0.00 sec2/3 Test #2: risk_engine ...................... Passed 0.00 sec3/3 Test #3: wire_codec ....................... Passed 0.00 sec 100% tests passed, 0 tests failed out of 3 Total Test time (real) = 0.01 sec
The tools you already run
- Build
It builds your tree before it edits it
- clangd
- CMake
- Compiler Explorer
- C++ Insights
- Debug
ASan, gdb and rr, on your process
- ASan
- gdb
- lldb
- Valgrind
- rr
- Lint
Your .clang-tidy, not ours
- clang-tidy
- clang-format
- cppcheck
- Speed
perf, before you see a diff
- perf
- Callgrind
- QuickBench
- Binaries
objdump, when there is no source
- objdump
- nm
- readelf
Your key, or your own server
Managed
Sign in and use OpenAI, Anthropic and Google models through ByteAsk. No API key to paste.
$ byteask loginYour key
Use your own OpenAI, Anthropic or Gemini key. Traffic goes straight to the provider, not through ByteAsk.
$ byteask byok setYour server
Point ByteAsk at vLLM, Ollama, llama.cpp, LM Studio, TGI, SGLang or a LiteLLM proxy. Self-hosted models are not metered.
$ byteask models add my-model --url http://your-host:8000
Standards it can cite
| Tool | Corpus |
|---|---|
| autosar_ref | AUTOSAR C++14 · MISRA · ISO C++ |
| mcu_ref | STM32 · Cortex-M · Modbus · CAN |
| fpga_ref | Xilinx UltraScale · AMBA AXI |
| hft_ref | ITCH/OUCH · FIX · IEEE 1588 PTP |
| grid_ref | IEEE 1547 · 2030.5 · SunSpec |
| scpi_ref | SCPI · instrument manuals |
| x86_ref | x86-64 Software Developer Manual |
