Skip to content

ADAMANT Decentralized Messenger and Crypto Wallet. Progressive Web Application (PWA) for Web, Tor, Android, macOS, Windows, and Linux.

License

Notifications You must be signed in to change notification settings

Adamant-im/adamant-im

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5,899 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GitHub Workflow Status (with event) GitHub commit activity (branch) GitHub release (with filter) Static Badge Static Badge

ADAMANT Messenger Progressive Web Application (PWA)

A messaging application client for ADAMANT Blockchain. See ADAMANT Project at adamant.im.

ADAMANT is a decentralized anonymous messenger based on the blockchain system. It’s independent of any governments or corporations, and even developers due to the distributed network infrastructure that contains an open-source code.

The ADAMANT blockchain system belongs to its users. Nobody can control, block, deactivate, restrict or censor accounts. Users take full responsibility for their content, messages, media, and goals and intentions of using the messenger.

Privacy is the main concept of ADAMANT: neither phone numbers nor emails are required. Apps have no access to the contact list or geotags, IPs are hidden from chatters and paranoids can use Tor app.

All the messages are encrypted with the Diffie-Hellman Curve25519, Salsa20, Poly1305 algorithms and signed by SHA-256 + Ed25519 EdDSA. Private keys are never transferred to the network. The sequence of messages and their authenticity is guaranteed by the blockchain.

ADAMANT includes crypto wallets for ADAMANT (ADM), Bitcoin (BTC), Ethereum (ETH), Dogecoin (DOGE) and Dash (DASH). Private keys for the wallets are derived from an ADAMANT passphrase. You can export the keys and use them in other wallets.

This application deployed at msg.adamant.im and available as standalone apps for macOS, Windows and Linux. Feel free to run your own messenger using this code and Build Setup.

ADAMANT Messenger has built-in crypto Exchanger and Adelina, an AI chat assistant based on ChatGPT.

Project setup

Clone the repository:

git clone --recursive https://github.com/Adamant-im/adamant-im.git

Install the dependencies:

npm install

Compiles and hot-reloads for development

npm run dev

Compiles and hot-reloads self-signed https-server for development

npm run https

Compiles and minifies for production

npm run build

Compiles and minifies for testnet build

npm run build:testnet

Preview production build locally

npm run serve

Build and preview testnet build locally

npm run serve:testnet

CSP hardening on Vercel builds

Vercel preview/dev hosts use the same soft CSP profile as production domains (including current unsafe-inline and unsafe-eval allowances) to avoid behavior drift between environments.

Strict CSP hardening (removing unsafe-eval) is tracked separately and must be done only after runtime dependency cleanup.

Lints and fixes files

npm run lint

Start dev server and electron app

npm run electron:dev

To force legacy Chrome extension-based Vue DevTools inside Electron:

ELECTRON_USE_CHROME_DEVTOOLS_EXTENSION=true npm run electron:dev

To keep DevTools open but reduce noisy Chromium logs in terminal (default behavior):

npm run electron:dev

To disable log suppression and see full Chromium/Electron internals:

ELECTRON_SUPPRESS_CHROMIUM_LOGS=false npm run electron:dev

Build electron version

npm run electron:build

Build electron version for macOS arm64 only

npm run electron:build:mac:arm64

Build electron version and notarize the app

npm run electron:build:notarize

Build electron macOS arm64 version and notarize the app

npm run electron:build:mac:arm64:notarize

macOS signing and notarization (local/CI)

For distributable macOS builds, use a valid Developer ID Application certificate and notarization.

The notarization hook (scripts/electron/notarize.cjs) supports 3 auth strategies:

  1. Apple ID + app-specific password (current CI compatible)
  2. Keychain profile (xcrun notarytool store-credentials)
  3. App Store Connect API key

Supported environment variables:

# Common
APPLE_NOTARIZE=true

# Strategy 1 (Apple ID)
APPLE_ID=...
APPLE_APP_SPECIFIC_PASSWORD=...
APPLE_TEAM_ID=...

# Strategy 2 (Keychain profile)
APPLE_KEYCHAIN_PROFILE=...
# optional
APPLE_KEYCHAIN=...

# Strategy 3 (App Store Connect API key)
APPLE_API_KEY=/absolute/path/to/AuthKey_XXXXXXXXXX.p8
APPLE_API_KEY_ID=XXXXXXXXXX
# optional for team keys
APPLE_API_ISSUER=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

Local builds can store these variables in electron-builder.env.local or electron-builder.env (also supported: .env.local, .env). The notarization hook loads them automatically and does not override variables already provided by shell/CI. For Apple ID strategy, APPLE_APP_PASSWORD is accepted as an alias for APPLE_APP_SPECIFIC_PASSWORD.

Code-signing for electron-builder:

# local identity in Keychain
CSC_NAME="Developer ID Application: <Company> (<TEAM_ID>)"

# or CI/base64 P12
CSC_LINK=...
CSC_KEY_PASSWORD=...

Preview electron production build

npm run electron:serve

Opening the Android project in Android Studio

$ npm run android:open

Running Android app

$ npm run android:run

Note: You must have an Android emulator or a connected device to run the app.

Build and sign Android app

$ cp capacitor.env.example capacitor.env # replace ENV values before build
$ npm run android:build

Download pre-build apps for macOS, Windows and Linux.

Note for Windows users

To build on Windows you must install build tools for windows, it is easier to do this with windows-build-tools npm package.

For detailed explanation on how things work, checkout the guide and docs for vue-loader.

Self-hosted

If you are unable to access adm.im (e.g., due to censorship), you can run a self-hosted instance of ADAMANT Messenger to:

  • Increase reliability and decentralization of the ADAMANT Messenger ecosystem.
  • Help other users access the messenger in countries with a strong Internet limitations.

We always encourage people to build it from source.

As an option, you can build and deploy the app to GitHub Pages.

Follow the instructions below.

Enable GH Actions

  1. Fork the repository.
  2. Go to the repository Settings.
  3. Navigate to the Pages tab.
  4. Set the source as GitHub Actions.

Run GH Workflow

  1. Go to the Actions tab.
  2. Enable workflows.
  3. Select the GitHub Pages workflow.
  4. Click Run workflow.
  5. Wait until the build succeeds.
  6. Open ADAMANT Messenger at username.github.io/adamant-im

You can as well point your GitHub Pages subdomain to a custom domain.