Configuration object containing wallet, storage, and relayer settings
A fully configured Vana SDK instance for Node.js use
This is the primary entry point for Node.js applications using the Vana SDK. The function automatically detects your configuration type and provides compile-time type safety:
The Node.js version provides enhanced capabilities including native file system access, server-side cryptographic operations, and support for personal server deployment. It includes all browser capabilities plus Node.js-specific optimizations and utilities.
import { Vana } from '@opendatalabs/vana-sdk/node';
import { createWalletClient, http } from 'viem';
import { privateKeyToAccount } from 'viem/accounts';
import { IPFSStorage, PinataStorage } from '@opendatalabs/vana-sdk/node';
import { mokshaTestnet } from '@opendatalabs/vana-sdk/node';
// Server setup with private key
const account = privateKeyToAccount('0x...');
const walletClient = createWalletClient({
account,
chain: mokshaTestnet,
transport: http('https://rpc.moksha.vana.org')
});
const vana = Vana({
walletClient,
storage: {
providers: {
ipfs: new IPFSStorage({
gateway: 'https://gateway.pinata.cloud',
timeout: 30000
}),
pinata: new PinataStorage({
apiKey: process.env.PINATA_KEY,
secretKey: process.env.PINATA_SECRET
})
},
defaultProvider: 'pinata'
},
relayerCallbacks: {
async submitPermissionGrant(typedData, signature) {
// Server-side relayer implementation
return await submitToCustomRelayer(typedData, signature);
}
}
});
// Server operations
const uploadResult = await vana.data.upload({
content: await fs.readFile('./user-data.json'),
filename: 'user-data.json',
schemaId: 1
});
// Personal server setup
await vana.server.setupPersonalServer({
serverUrl: 'https://my-server.example.com',
capabilities: ['data_processing', 'ml_inference']
});
// CLI tool or script usage
const vana = Vana({
chainId: 14800, // Moksha testnet
account: privateKeyToAccount(process.env.PRIVATE_KEY),
rpcUrl: process.env.RPC_URL,
storage: {
providers: { ipfs: new IPFSStorage() },
defaultProvider: 'ipfs'
}
});
// Batch operations for data processing
const userFiles = await vana.data.getUserFiles({
owner: process.env.USER_ADDRESS
});
for (const file of userFiles) {
const decrypted = await vana.data.decryptFile(file);
// Process file data...
}
// Express.js server integration
import express from 'express';
import { handleRelayerOperation } from '@opendatalabs/vana-sdk/node';
const app = express();
app.post('/api/relay', async (req, res) => {
try {
const result = await handleRelayerOperation(
vana,
req.body
);
res.json(result);
} catch (error) {
res.status(500).json({ error: error.message });
}
});
Creates a new Vana SDK instance configured for Node.js environments.
Configuration object containing wallet, storage, and relayer settings
A fully configured Vana SDK instance for Node.js use
This is the primary entry point for Node.js applications using the Vana SDK. The function automatically detects your configuration type and provides compile-time type safety:
The Node.js version provides enhanced capabilities including native file system access, server-side cryptographic operations, and support for personal server deployment. It includes all browser capabilities plus Node.js-specific optimizations and utilities.
import { Vana } from '@opendatalabs/vana-sdk/node';
import { createWalletClient, http } from 'viem';
import { privateKeyToAccount } from 'viem/accounts';
import { IPFSStorage, PinataStorage } from '@opendatalabs/vana-sdk/node';
import { mokshaTestnet } from '@opendatalabs/vana-sdk/node';
// Server setup with private key
const account = privateKeyToAccount('0x...');
const walletClient = createWalletClient({
account,
chain: mokshaTestnet,
transport: http('https://rpc.moksha.vana.org')
});
const vana = Vana({
walletClient,
storage: {
providers: {
ipfs: new IPFSStorage({
gateway: 'https://gateway.pinata.cloud',
timeout: 30000
}),
pinata: new PinataStorage({
apiKey: process.env.PINATA_KEY,
secretKey: process.env.PINATA_SECRET
})
},
defaultProvider: 'pinata'
},
relayerCallbacks: {
async submitPermissionGrant(typedData, signature) {
// Server-side relayer implementation
return await submitToCustomRelayer(typedData, signature);
}
}
});
// Server operations
const uploadResult = await vana.data.upload({
content: await fs.readFile('./user-data.json'),
filename: 'user-data.json',
schemaId: 1
});
// Personal server setup
await vana.server.setupPersonalServer({
serverUrl: 'https://my-server.example.com',
capabilities: ['data_processing', 'ml_inference']
});
// CLI tool or script usage
const vana = Vana({
chainId: 14800, // Moksha testnet
account: privateKeyToAccount(process.env.PRIVATE_KEY),
rpcUrl: process.env.RPC_URL,
storage: {
providers: { ipfs: new IPFSStorage() },
defaultProvider: 'ipfs'
}
});
// Batch operations for data processing
const userFiles = await vana.data.getUserFiles({
owner: process.env.USER_ADDRESS
});
for (const file of userFiles) {
const decrypted = await vana.data.decryptFile(file);
// Process file data...
}
// Express.js server integration
import express from 'express';
import { handleRelayerOperation } from '@opendatalabs/vana-sdk/node';
const app = express();
app.post('/api/relay', async (req, res) => {
try {
const result = await handleRelayerOperation(
vana,
req.body
);
res.json(result);
} catch (error) {
res.status(500).json({ error: error.message });
}
});
Creates a new Vana SDK instance configured for Node.js environments.
Configuration object containing wallet, storage, and relayer settings
A fully configured Vana SDK instance for Node.js use
This is the primary entry point for Node.js applications using the Vana SDK. The function automatically detects your configuration type and provides compile-time type safety:
The Node.js version provides enhanced capabilities including native file system access, server-side cryptographic operations, and support for personal server deployment. It includes all browser capabilities plus Node.js-specific optimizations and utilities.
import { Vana } from '@opendatalabs/vana-sdk/node';
import { createWalletClient, http } from 'viem';
import { privateKeyToAccount } from 'viem/accounts';
import { IPFSStorage, PinataStorage } from '@opendatalabs/vana-sdk/node';
import { mokshaTestnet } from '@opendatalabs/vana-sdk/node';
// Server setup with private key
const account = privateKeyToAccount('0x...');
const walletClient = createWalletClient({
account,
chain: mokshaTestnet,
transport: http('https://rpc.moksha.vana.org')
});
const vana = Vana({
walletClient,
storage: {
providers: {
ipfs: new IPFSStorage({
gateway: 'https://gateway.pinata.cloud',
timeout: 30000
}),
pinata: new PinataStorage({
apiKey: process.env.PINATA_KEY,
secretKey: process.env.PINATA_SECRET
})
},
defaultProvider: 'pinata'
},
relayerCallbacks: {
async submitPermissionGrant(typedData, signature) {
// Server-side relayer implementation
return await submitToCustomRelayer(typedData, signature);
}
}
});
// Server operations
const uploadResult = await vana.data.upload({
content: await fs.readFile('./user-data.json'),
filename: 'user-data.json',
schemaId: 1
});
// Personal server setup
await vana.server.setupPersonalServer({
serverUrl: 'https://my-server.example.com',
capabilities: ['data_processing', 'ml_inference']
});
// CLI tool or script usage
const vana = Vana({
chainId: 14800, // Moksha testnet
account: privateKeyToAccount(process.env.PRIVATE_KEY),
rpcUrl: process.env.RPC_URL,
storage: {
providers: { ipfs: new IPFSStorage() },
defaultProvider: 'ipfs'
}
});
// Batch operations for data processing
const userFiles = await vana.data.getUserFiles({
owner: process.env.USER_ADDRESS
});
for (const file of userFiles) {
const decrypted = await vana.data.decryptFile(file);
// Process file data...
}
// Express.js server integration
import express from 'express';
import { handleRelayerOperation } from '@opendatalabs/vana-sdk/node';
const app = express();
app.post('/api/relay', async (req, res) => {
try {
const result = await handleRelayerOperation(
vana,
req.body
);
res.json(result);
} catch (error) {
res.status(500).json({ error: error.message });
}
});
Creates a new Vana SDK instance configured for Node.js environments.
Configuration object containing wallet, storage, and relayer settings
A fully configured Vana SDK instance for Node.js use
This is the primary entry point for Node.js applications using the Vana SDK. The function automatically detects your configuration type and provides compile-time type safety:
The Node.js version provides enhanced capabilities including native file system access, server-side cryptographic operations, and support for personal server deployment. It includes all browser capabilities plus Node.js-specific optimizations and utilities.
import { Vana } from '@opendatalabs/vana-sdk/node';
import { createWalletClient, http } from 'viem';
import { privateKeyToAccount } from 'viem/accounts';
import { IPFSStorage, PinataStorage } from '@opendatalabs/vana-sdk/node';
import { mokshaTestnet } from '@opendatalabs/vana-sdk/node';
// Server setup with private key
const account = privateKeyToAccount('0x...');
const walletClient = createWalletClient({
account,
chain: mokshaTestnet,
transport: http('https://rpc.moksha.vana.org')
});
const vana = Vana({
walletClient,
storage: {
providers: {
ipfs: new IPFSStorage({
gateway: 'https://gateway.pinata.cloud',
timeout: 30000
}),
pinata: new PinataStorage({
apiKey: process.env.PINATA_KEY,
secretKey: process.env.PINATA_SECRET
})
},
defaultProvider: 'pinata'
},
relayerCallbacks: {
async submitPermissionGrant(typedData, signature) {
// Server-side relayer implementation
return await submitToCustomRelayer(typedData, signature);
}
}
});
// Server operations
const uploadResult = await vana.data.upload({
content: await fs.readFile('./user-data.json'),
filename: 'user-data.json',
schemaId: 1
});
// Personal server setup
await vana.server.setupPersonalServer({
serverUrl: 'https://my-server.example.com',
capabilities: ['data_processing', 'ml_inference']
});
// CLI tool or script usage
const vana = Vana({
chainId: 14800, // Moksha testnet
account: privateKeyToAccount(process.env.PRIVATE_KEY),
rpcUrl: process.env.RPC_URL,
storage: {
providers: { ipfs: new IPFSStorage() },
defaultProvider: 'ipfs'
}
});
// Batch operations for data processing
const userFiles = await vana.data.getUserFiles({
owner: process.env.USER_ADDRESS
});
for (const file of userFiles) {
const decrypted = await vana.data.decryptFile(file);
// Process file data...
}
// Express.js server integration
import express from 'express';
import { handleRelayerOperation } from '@opendatalabs/vana-sdk/node';
const app = express();
app.post('/api/relay', async (req, res) => {
try {
const result = await handleRelayerOperation(
vana,
req.body
);
res.json(result);
} catch (error) {
res.status(500).json({ error: error.message });
}
});
Creates a new Vana SDK instance configured for Node.js environments.