C-bindings for the Go Cwtch Library
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Gitea 7069fab0b1 v1.8.0 3 months ago
constants add support for storing and using lastMessageSeen Time from ui and using to calculate unread counts 6 months ago
features add build date and version info; add server sync state data 7 months ago
utils squash notifications on group messages while syncing 3 months ago
.drone.yml mac arm64 3 months ago
.gitignore macos uses .dylib 1 year ago
BUILDING_DEBUG.md Fresh Repository Commit - Cwtch Beta 1 year ago
LICENSE mit license 1 year ago
MEMORY.md Clarify Memory Ownership Model of libCwtch and Callers 1 year ago
Makefile mac arm64 3 months ago
README.md pull in windows build notes from pr 67 3 months ago
clangwrap.sh Build ios 1 year ago
go.mod Upgrad Cwtch - Wrap Profiling 5 months ago
go.sum Upgrad Cwtch - Wrap Profiling 5 months ago
lib.go Fix Invalid Timestamp in Cached Messages 3 months ago
quality.sh Fix logging of ACN 9 months ago
switch-ffi.sh switch swtich-*.sh back to sed now with -i.bak and rm lib.go.bak for compatibility with macos 1 year ago
switch-gomobile.sh switch swtich-*.sh back to sed now with -i.bak and rm lib.go.bak for compatibility with macos 1 year ago



C-bindings for the Go Cwtch Library.

Build Instructions

make linux
make android
make windows
make macos

Android Build Notes

Our build infrastructure is using Go 1.15.10, NDK 21.0.6113669, and gomobile commit bdb1ca9a1e083af5929a8214e8a056d638ebbf2d (2021 07 16)

Go 1.17.4, NDK 22.1.7171670, and gomobile 4e6c2922fdeed32d3596616518aaee7b0d79ce55 (2021 12 07) appear to compile as well.

Other version combinations untested and some definitely do not work.


Cwtch relies on sqlite which in turn requires the use of CGO. As per this issue that means TDM-GCC is required to be installed and used to compile on Windows. Install it and add it to your path and make windows should then work.

Experimental iOS support

make ios


General Environment Variables

  • LOG_FILE if defined will mean all go logging will go to a file instead of stdout
  • LOG_LEVEL if set to debug will cause debug logging to be included in log output
  • CWTCH_PROFILE if set to 1 will cause a memory profile to be written to mem.prof and all active goroutines written to stdout when DebugInfo() is called.

Linux Desktop:

  • LD_LIBRARY_PATH set to point to libCwtch.so
  • or drop a symlink into /usr/lib


  • copy cwtch.aar into flutter_app/android/cwtch


  • copy libCwtch.dll into the directory of the .exe using it


  • copy libCwtch.x64.dylib and libCwtch.arm.dylib into the directory you are executing from