AI-powered Android client for automated TikTok video posting.
This is the mobile client app that works with KotKit's backend AI service. The app sends screenshots to the backend, receives intelligent actions (tap, swipe, type), and executes them via Android Accessibility Service. All AI/VLM processing happens on the server - the app contains zero AI models locally.
Why open source? Transparency and trust. You can verify that the app only:
- Accesses TikTok (no other apps)
- Sends screenshots to backend API for analysis
- Does NOT collect personal data, passwords, or contacts
For individual creators and content publishers.
ΠΠ΅ Π΄ΠΎΠ²Π΅ΡΡΠΉΡΠ΅ - ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅! Don't trust - verify!
ΠΡΡΠ°Π²ΡΡΠ΅ ΡΡΡΠ»ΠΊΡ Π² Π»ΡΠ±ΠΎΠΉ AI (Claude, ChatGPT, DeepSeek):
https://github.com/pashechello/kotkit
Π‘ΠΏΡΠΎΡΠΈΡΠ΅ / Ask:
ΠΡΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡΡΠΉ ΡΡΠΎΡ Android ΠΏΡΠΎΠ΅ΠΊΡ. ΠΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Accessibility Service ΠΈ ΠΊ ΠΊΠ°ΠΊΠΈΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌ ΠΎΠ½ ΠΈΠΌΠ΅Π΅Ρ Π΄ΠΎΡΡΡΠΏ? ΠΠ°ΠΊΠΈΠ΅ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°Π΅Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅? ΠΠ°ΠΊΠΈΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡΡΡ Π½Π° ΡΠ΅ΡΠ²Π΅Ρ?
Analyze this Android app. How does the Accessibility Service work and which apps can it access? What permissions does the app request? What data is sent to the server?
AI ΠΏΡΠΎΡΠΈΡΠ°Π΅Ρ Π²Π΅ΡΡ ΠΊΠΎΠ΄ ΠΈ ΡΠΊΠ°ΠΆΠ΅Ρ ΡΡΠΎ ΡΠ°ΠΌ. / AI will read all code and tell you what's there.
Default mode for content creators who want to automate their own content posting:
- Automated Video Posting - Schedule and publish videos to TikTok automatically
- Smart Scheduler - AI-powered optimal posting time suggestions based on audience activity
- Video Queue - Manage multiple videos with drag-and-drop reordering
- AI Caption Generation - Generate engaging captions and hashtags via backend API
- Publishing History - Track all published videos with analytics
- Localization - Russian and English languages supported
ΠΠ°ΡΠ°Π±Π°ΡΡΠ²Π°ΠΉΡΠ΅ Π½Π° ΡΠ²ΠΎΡΠΌ TikTok Π°ΠΊΠΊΠ°ΡΠ½ΡΠ΅!
KotKit Network ΡΠΎΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ Π±ΡΠ΅Π½Π΄Ρ (ΡΠ΅ΠΊΠ»Π°ΠΌΠΎΠ΄Π°ΡΠ΅Π»Π΅ΠΉ) Ρ Π²Π»Π°Π΄Π΅Π»ΡΡΠ°ΠΌΠΈ TikTok Π°ΠΊΠΊΠ°ΡΠ½ΡΠΎΠ². ΠΡΠ΅Π½Π΄Ρ ΠΏΠ»Π°ΡΡΡ Π·Π° ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΡ ΡΠ²ΠΎΠΈΡ Π²ΠΈΠ΄Π΅ΠΎ Π½Π° Π²Π°ΡΠ΅ΠΌ Π°ΠΊΠΊΠ°ΡΠ½ΡΠ΅.
ΠΠ°ΠΊ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ:
- ΠΡ Π²ΠΊΠ»ΡΡΠ°Π΅ΡΠ΅ Worker Mode Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ
- ΠΠΎΠ»ΡΡΠ°Π΅ΡΠ΅ Π·Π°Π΄Π°ΡΠΈ ΠΎΡ Π±ΡΠ΅Π½Π΄ΠΎΠ² (Π²ΠΈΠ΄Π΅ΠΎ + ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅)
- ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΡΠ±Π»ΠΈΠΊΡΠ΅Ρ Π²ΠΈΠ΄Π΅ΠΎ Π² Π²Π°Ρ TikTok
- Π§Π΅ΡΠ΅Π· 24 ΡΠ°ΡΠ° ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΡΡΡ ΡΡΠΎ Π²ΠΈΠ΄Π΅ΠΎ Π½Π΅ ΡΠ΄Π°Π»Π΅Π½ΠΎ
- ΠΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΠ΅ ΠΎΠΏΠ»Π°ΡΡ Π·Π° ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΡΠΏΠ΅ΡΠ½ΡΠΉ ΠΏΠΎΡΡ
ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ:
- Task Assignment - Receive posting tasks from advertisers
- Automated Publishing - Download and publish videos automatically
- Reward System - Earn USD for each successful publication
- Payout Options - Withdraw via cryptocurrency, bank cards, or local payment systems (Π‘ΠΠ, ΠΊΠ°ΡΡΡ)
- Anti-Fraud Protection - 24-hour verification ensures fair payment
- Resume Downloads - Network interruption recovery for large video files
- Android 7.0 (API 24) or higher
- TikTok app installed
- Accessibility Service permission enabled
KotKit uses only Accessibility Service for screen unlock β no ADB, no root, no special setup required.
| Lock Type | How It Works |
|---|---|
| Swipe only | Accessibility Service swipes to unlock |
| PIN | Reads PIN pad from UI tree, taps each digit |
| Password | Coming soon |
- User saves PIN in the app (stored encrypted via Android Keystore)
- When posting time comes, app wakes the screen
- Accessibility Service swipes up to show PIN pad
- Reads PIN button coordinates from
rootInActiveWindow(UI tree) - Uses
dispatchGesture()to tap each digit - Phone unlocked β TikTok opens β video posted
Key insight: Android's TalkBack (for visually impaired users) works on lockscreen. Our Accessibility Service uses the same APIs, so it works too β even on MIUI/HyperOS where shell commands are blocked.
Previous versions used ADB/Wireless Debugging for PIN entry. We removed it because:
- Complex setup (Developer Options, pairing codes)
- Breaks after reboot
- Doesn't work on some devices (MIUI blocks shell input)
- Accessibility approach is simpler and more reliable
- Download the latest APK from Releases
- Install APK on your device (enable "Install from unknown sources" if needed)
- Open the app and follow the setup wizard
- Enable Accessibility Service in Android Settings
# Clone the repository
git clone https://github.com/pashechello/kotkit.git
cd kotkit
# Configure local.properties (optional, for release signing)
cat > local.properties << EOF
sdk.dir=/path/to/your/Android/sdk
RELEASE_STORE_FILE=path/to/your/keystore.jks
RELEASE_STORE_PASSWORD=your_store_password
RELEASE_KEY_ALIAS=your_key_alias
RELEASE_KEY_PASSWORD=your_key_password
EOF
# Build debug APK
./gradlew assembleDebug
# APK will be in app/build/outputs/apk/debug/Client-Server Architecture:
βββββββββββββββββββββββββββββββββββ
β π± Your Android Device β
β β
β βββββββββββββββββββββββββββββ β
β β KotKit Basic (this app) β β
β β β β
β β 1. Capture screenshot ββββΌβββ
β β 2. Send to backend API β β β HTTPS + JWT
β β 3. Receive action ββββΌβββ (api.kotkit.pro)
β β 4. Execute via β β
β β AccessibilityService β β
β βββββββββββββββββββββββββββββ β
β β
β βββββββββββββββββββββββββββββ β
β β TikTok App β β
β β (automated by above) β β
β βββββββββββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββ
β
β Screenshot (JPEG, 720x1440)
β UI Tree (accessibility nodes)
βΌ
βββββββββββββββββββββββββββββββββββ
β βοΈ KotKit Backend (closed) β
β β
β - Vision-Language Model (VLM) β
β - AI decision making β
β - Action planning β
β β
β Returns: {action: "tap", β
β x: 540, y: 960} β
βββββββββββββββββββββββββββββββββββ
Publishing Flow:
- Unlock Screen - Automatically unlocks the device if needed
- Launch TikTok - Opens TikTok via share intent with the video
- AI-Guided Navigation - Backend VLM analyzes screenshots and provides actions
- Add Caption - Enters the caption and hashtags
- Publish - Taps the publish button and verifies success
- Extract Link - Copies the published video URL for tracking
What stays on device:
- Video files (in your gallery)
- Posting history (SQLite database)
- Encrypted credentials (Android Keystore)
What goes to backend:
- Screenshots of TikTok UI (for AI analysis)
- UI accessibility tree (button coordinates)
- Task context (caption, video filename)
No AI models on device - all intelligence is server-side. This keeps the app small, fast, and allows us to improve the AI without requiring app updates.
kotkit-basic/
βββ app/
β βββ src/main/kotlin/com/kotkit/basic/
β βββ agent/ # PostingAgent - Core posting logic
β β βββ PostingAgent.kt
β β βββ AgentState.kt
β β βββ ActionHandler.kt
β βββ executor/ # ActionExecutor - UI automation
β β βββ accessibility/ # Accessibility Service
β β βββ screen/ # Screen unlock, wake lock
β β βββ screenshot/ # Screenshot capture
β β βββ humanizer/ # Human-like action timing
β βββ scheduler/ # SmartScheduler (Personal Mode)
β β βββ SmartScheduler.kt
β β βββ PostWorker.kt
β β βββ SchedulerReceiver.kt
β βββ network/ # Network workers (Worker Mode)
β β βββ NetworkWorkerService.kt
β β βββ NetworkTaskExecutor.kt
β β βββ VideoDownloader.kt
β β βββ HeartbeatWorker.kt
β βββ data/
β β βββ local/ # Room database
β β βββ remote/api/ # Retrofit API client
β β βββ repository/ # Data repositories
β βββ di/ # Hilt DI modules
β βββ security/ # SSL pinning, integrity checks
β βββ ui/
β βββ screens/ # Compose UI screens
β βββ components/ # Reusable components
β βββ navigation/ # Navigation graph
βββ README.md
- Language: Kotlin
- UI: Jetpack Compose + Material 3
- DI: Hilt (Dagger)
- Database: Room
- Network: Retrofit + OkHttp with SSL pinning
- Background: WorkManager + Foreground Services
- Async: Coroutines + Flow
- Security: Android Keystore (encrypted PIN storage), Conscrypt (TLS)
The app communicates with the KotKit backend API for:
- Authentication - JWT-based auth with token refresh
- AI Analysis - Screenshot analysis and action planning
- Task Management - Worker mode task assignment and tracking
- Configuration - Remote config and feature flags
- Analytics - Usage tracking and error reporting
All AI/ML processing is server-side. The mobile app contains no local AI models.
Full security documentation: SECURITY.md
Key points:
- Accessibility Service is TikTok-only - enforced at Android OS level via
packageNamesattribute - 3-layer package restriction - XML manifest + runtime constant + event filtering
- Server cannot bypass restrictions - it can only send action commands, not change which apps are accessible
- PIN encrypted with AES-256-GCM - stored locally, never transmitted to server
- SSL certificate pinning - only communicates with
api.kotkit.pro - No dangerous permissions - no contacts, SMS, camera, microphone, location
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
Apache License 2.0 - see LICENSE
- Documentation: docs.kotkit.pro
- Issues: GitHub Issues
- Website: kotkit.pro